1 json对象
- JSON 对象使用在大括号 {…} 中书写。
- 对象可以包含多个 key/value(键/值)对。key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
- key 和 value 中使用冒号 : 分割。
- 每个 key/value 对使用逗号 , 分割。
- 如果value为json类型,则表示嵌套对象。
2 get_json_object 语法
string get_json_object(json <json>, string <json_path>)
参数说明
json:必填,待处理的JSON数据,标准的JSON格式对象,格式为{Key:Value, Key:Value,...}
json_path:必填,需要返回的值的JSON路径。
返回值说明
返回STRING类型。
json_path 不同字符的含义如下:
-
$:表示根节点。
-
.或[‘’]:表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含.时,可以用[‘’]来替代。
-
[]:[number]表示数组下标,从0开始。
3 获取指定字符串过程中的一些小坑
获取key1的对象为嵌套对象,可以使用.或[]获取,但是如果key包含.,则需要使用[]获取,否则解析的路径错误。
比如如下json字符串,在sql中使用str指代:
{
"second": {
"key1": "-999",
"key2.1": "1"
},
"test.isfirst": "0"
}
不同解析语法获取的解析结果如下:
SELECT get_json_object(str,'$.second["key2.1"]'), -- 返回结果 “1”
get_json_object(str,'$.second.key1'), -- 返回结果 “-999”
get_json_object(str,'$["test.isfirst"]'), -- 返回结果 “0”
get_json_object(str,'$.test.isfirst') -- 返回结果 NULL
参考文档