当前位置:   article > 正文

hive解析json数组_hivejson数组解析

hivejson数组解析

前言 解析如下数组 获取app_name和 app_type 字段

[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]

1、先通过正则表达式将数组中的',' 用 ';' 代替

不替换后续拆分会出现问题

select regexp_replace('[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]', '\\}\\,\\{','\\}\\;\\{');

结果如下:

 

2、再通过正则表达式把数组中的[]去掉

  1. select regexp_replace(
  2. regexp_replace(
  3. '[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]', '\\}\\,\\{','\\}\\;\\{'
  4. ),'\\[|\\]',''
  5. );

3、用split函数按;进行分割

  1. select
  2. split(
  3. regexp_replace(
  4. regexp_replace(
  5. '[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]', '\\}\\,\\{','\\}\\;\\{'
  6. ),'\\[|\\]',''
  7. ),'\\;'
  8. );

 

4、再利用explode函数将数组转换按列输出

  1. select explode(
  2. split(
  3. regexp_replace(
  4. regexp_replace(
  5. '[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]', '\\}\\,\\{','\\}\\;\\{'
  6. ),'\\[|\\]',''
  7. ),'\\;'
  8. )
  9. );

 

5、最后用json_tuple函数将explode转换的json格式的列进行解析

  1. select json_tuple(json, 'app_name', 'app_type')
  2. from
  3. (
  4. select explode(
  5. split(
  6. regexp_replace(
  7. regexp_replace(
  8. '[{"app_name":"Kloningponsel","app_type":1,"in_time":1544554257000,"package":"com.coloros.backuprestore","version_name":"5.0.32","flags":954744389,"version_code":5032,"up_time":1565434586000},{"app_name":"AdaKami","app_type":0,"in_time":1579322813871,"package":"com.idnada.loan","version_name":"1.7.1","flags":954744388,"version_code":29,"up_time":1581659506373},{"app_name":"com.factory.mmigroup.MMIGroupApplication","app_type":1,"in_time":1544554257000,"package":"com.factory.mmigroup","version_name":"2.1","flags":948485709,"version_code":3,"up_time":1544554257000}]', '\\}\\,\\{','\\}\\;\\{'
  9. ),'\\[|\\]',''
  10. ),'\\;'
  11. )
  12. ) as json) a;

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/911179
推荐阅读
相关标签
  

闽ICP备14008679号