一、语法
目的:在一个标准JSON字符串中,按照指定方式抽取指定的字符串。
string get_json_object(string <json>, string <path>)
参数说明
- json:必填。STRING类型。标准的JSON格式对象,格式为{Key:Value, Key:Value,...}。如果遇到英文双引号("),需要用两个反斜杠(\)进行转义。如果遇到英文单引号('),需要用一个反斜杠(\)进行转义。
- path:必填。STRING类型。表示在json中的path,以$开头。
- $:表示根节点。
- .或['']:表示子节点。
- *:返回整个数组。
二、例:在数据表test中有一列jsonData,其数据如下:
jsonData = '{
"ID":121,
"message":{
"name":"Asher",
"location":[{"county":"浦东","city":"上海"},
{"county":"西直门","city":"北京"}]
}
}'
-
提取jsonData第一层数据ID
select get_json_object(jsonData,'$.ID') from test
--输出
121
-
提取jsonData第二层数据name
select get_json_object(jsonData,'$.message.name') from test
--输出
Asher
-
提取jsonData第二层数据location的第一项
select get_json_object(jsonData,'$.message.location[0]') from test
--输出
{"county":"浦东","city":"上海"}
-
提取jsonData第二层数据location的第一项的city
select get_json_object(jsonData,'$.message.location[0].city') from test
--输出
上海
5.提取jsonData第三层数据city
select get_json_object(jsonData,'$.message.location.city') from test
--输出
>["上海","北京"]
码字不易,喜欢请点赞,谢谢!!!😊
参考:
https://blog.csdn.net/Asher117/article/details/107984650
https://help.aliyun.com/zh/maxcompute/user-guide/get-json-object