Hive SQL JSON 字符串函数 GET_JSON_OBJECT 是用于解析 json 字符串,支持多层嵌套的 json 形式的解析,主要是为了获取 json 字符串中内部指定 key 的相关信息。
语法说明
语法
GET_JSON_OBJECT(string json_string, string path)
说明
其中 json_string 为要解析的字符串,path 为要获取的 json 中获取的 key;如果指定的 json_string 为非法,则返回 null。
需要注意的是,第二个参数使用 $
表示 json 变量标识,然后用 .
或 []
读取对象或数组。
常用例子
假设有解析如下 json 数据,并获取相应的内容:
{"store":
{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
"bicycle":{"price":19.95,"color":"red"}
},
"email":"amy@only_for_json_udf_test.net",
"owner":"amy"
}
获取 json 最外层 key
获取最外层的 owner 信息,示例如下:
hive> SELECT get_json_object(src_json.json, '$.owner') FROM src_json;
amy
获取 json 内嵌的 key
获取 store 对象的 bicycle 对象的 price 的信息,示例如下:
hive> SELECT get_json_object(src_json.json, '$.store.bicycle.price') FROM src_json;
19.95
获取 json 的数组对象的索引信息
获取 store 对象的 fruit 数组的第一个信息,示例如下:
hive> SELECT get_json_object(src_json.json, '$.store.fruit\[0]') FROM src_json;
{"weight":8,"type":"apple"}
指定不存在的 key 时
若指定不存在的 key 时,返回 NULL,示例如下:
hive> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;
NULL