一、get_json_object

函数的作用:用来解析json字符串的一个字段:

  1. select get_json_object(flist,'$.filtertype') as filtertype
  2. ,get_json_object(flist,'$.filtersubtype')as filtersubtype
  3. ,get_json_object(flist,'$.filtername') as filtername
  4. from aaaaaaa

运行结果如下(只解析了一条数据):

 

对于jsonArray(json数组),如person表的xjson字段有数据:

[{"name":"王二狗","sex":"男","age":"25"},{"name":"李狗嗨","sex":"男","age":"47"}]

取出第一个json对象,那么hive sql为:

SELECT get_json_object(xjson,"$.[0]") FROM person;

 结果是:

{"name":"王二狗","sex":"男","age":"25"}

取出第一个json的age字段的值:

SELECT get_json_object(xjson,"$.[0].age") FROM person;

结果

25

二、json_tuple

函数的作用:用来解析json字符串中的多个字段

  1. select a.flist
  2. ,b.filtertype
  3. ,b.filtersubtype
  4. ,b.filtername
  5.  from aaaaaaaaa a
  6. lateral view json_tuple(flist,'filtertype', 'filtersubtype', 'filtername') b as
filtertype, filtersubtype,filtername; 

运行结果如下: