get_json_object 函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

path 提取 JSON 对象。

小窍门

对于新代码,Azure Databricks建议将 VARIANT 数据类型: 运算符 配合使用来查询 JSON 数据。 VARIANT 提供比基于字符串的 JSON 分析更好的读取和写入性能、区分大小写的字段访问和更清晰的语义。 请参阅 变体与 JSON 字符串有何不同?

语法

get_json_object(expr, path)

参数

  • expr:包含格式正确的 JSON 的 STRING 表达式。
  • path:一个字符串文本,其中包含根于 . $. 有关常见模式支持的语法和示例,请参阅说明

返回

一个 STRING。

如果找不到该对象,则返回 NULL。

示例

-- Extract a top-level field
> SELECT get_json_object('{"a":"b"}', '$.a');
 b

-- Extract a nested field
> SELECT get_json_object('{"a":{"b":"c"}}', '$.a.b');
 c

-- Extract an array element by index
> SELECT get_json_object('{"items":["apple","pear"]}', '$.items[0]');
 apple

-- Extract a field whose name contains a space
> SELECT get_json_object('{"first name":"Ada"}', '$["first name"]');
 Ada

-- Extract a field whose name contains a dot, using bracket notation with double quotes
> SELECT get_json_object('{"ids":{"a.b":"42"}}', '$.ids["a.b"]');
 42

-- Extract a field from every element of an array
> SELECT get_json_object('{"items":[{"n":1},{"n":2}]}', '$.items[*].n');
 [1,2]

-- Returns NULL when the path does not match
> SELECT get_json_object('{"a":"b"}', '$.missing');
 NULL

备注

get_json_object 使用根于 $. 的 JSONPath 语法。 按点表示法(.field)进行字段访问不区分大小写;括号表示法(['field']["field"])区分大小写。 这不同于Azure Databricks JSON 路径表达式用于 : 运算符以查询单独记录的 VARIANT 和 JSON 字符串。