几个点,一个个来
字段内容为JSON字符串,ETL过程中需要解析JSON字符串,并取出解析后的对象的某个值
处理方法,使用get_json_object()
函数、get_json_object(string json_string, string path)
。
函数可以接收两个参数,第一个参数为需要解析的字段或者字符串,第二个字段为解析后取值的表达式,表达式固定以`$
`符号开头。
举个栗子
直接查对象:
select get_json_object('{"abc":123}','$.abc') as result;
返回结果:
查询数组:
select get_json_object('["abc","bcd"]','$[1]') as result
返回结果:
也可以组合嵌套使用:
select get_json_object('["abc",{"bcd":123}]','$[1].bcd') as result
select get_json_object('{"def":["abc",{"bcd":123}]}','$.def[1].bcd') as result
如果查询一个不存在的key,则返回 null,比如
select get_json_object('{"aaa":["abc",{"bcd":123}]}','$.def[1].bcd') as result
或者解析的字符串格式不对,无法被解析成JSON对象,比如
select get_json_object('{"aaa}]}','$.def[1].bcd') as result
发表评论