JSON_PARSE

✅ Azure 流分析 ✅ 构造事件流

JSON_PARSE 将 JSON 格式的字符串转换为可以访问和查询的记录。 当事件包含序列化为字符串的嵌套 JSON 对象(例如dataFabric Eventstream 更改事件中的属性)时,请使用此函数。

为何使用JSON_PARSE

许多流式处理方案(尤其是 Eventstream 集成)包含一个事件,其中属性是序列化为字符串的 JSON 文档。 在事件反序列化期间,这些嵌套有效负载被视为字符串,因此不能将其属性作为 JSON 对象直接访问。 用于 JSON_PARSE 将字符串编码的 JSON 转换为可以访问和查询其属性的结构化记录。

Syntax

JSON_PARSE ( jsonString )

Arguments

名称 类型 说明
jsonString nvarchar(max) 序列化为字符串的有效 JSON 对象。

返回类型

返回分析的 JSON 对象作为类型的 record值。

错误处理

JSON_PARSE 是一个非引发函数。 如果无法完成分析,该函数将 NULL 返回而不是失败的查询执行。 JSON_PARSE NULL返回时间:

  • 输入表达式不是受支持的字符串值。
  • 提供的字符串无效 JSON。
  • 发生另一个 JSON 转换失败。

示例

这些示例使用以下输入事件。 属性oldcurrent包含序列化为字符串的 JSON 对象。

{
  "eventrow": {
    "old": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\"}",
    "current": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\",\"ProductName\":\"Touring-2000 Blue, 54\"}"
  }
}

分析嵌套 JSON 字符串

以下查询将 JSON 字符串 eventrow.old 转换为记录:

SELECT
    JSON_PARSE(eventrow.old) AS ParsedOldRow
INTO Output
FROM Input

访问已分析记录中的属性

以下查询使用点表示法分析和 eventrow.current 访问返回的记录中的属性:

WITH ParsedEvents AS
(
    SELECT JSON_PARSE(eventrow.current) AS ParsedCurrent
    FROM Input
)
SELECT
    ParsedCurrent.SalesOrderID,
    ParsedCurrent.ProductName
FROM ParsedEvents