适用于:
Databricks SQL
Databricks Runtime
从 path 提取 JSON 对象。
小窍门
对于新代码,Azure Databricks建议将 VARIANT 数据类型与 : 运算符 配合使用来查询 JSON 数据。
VARIANT 提供比基于字符串的 JSON 分析更好的读取和写入性能、区分大小写的字段访问和更清晰的语义。 请参阅 变体与 JSON 字符串有何不同?。
语法
get_json_object(expr, 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 字符串。