几个点,一个个来

字段内容为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