Hive如何解析复杂的json字符串嵌套结构

Hive解析json字符串

json类似于python的字典,类似于key-value格式,但是可以实现嵌套的数据结构

一、json格式

json简单格式:

{
  "name":"Tom",
  "age":20,
  "sex":"male"
}

上面是简单的json格式,还可以有复杂的嵌套格式

{
  "name":"Tom",
  "age":20,
  "sex":"male",
  "friend":["Jerry","Lilly","Bob"],
  "local":{
    "country":"China",
    "city":"beijing",
    "foods":["dock","douzhi","dianxin"]
  }
}

二、Hive解析json

Hive提供了解析json格式的udf函数:get_json_object(string json_string, string path)

  1. 解析简单的json格式

    获得json中的name字段的value

    select get_json_object('{
      "name":"Tom",
      "age":20,
      "sex":"male"
    }', '$.name');
    

    输出:

    Tom
    

在这里插入图片描述

  1. 解析复杂的json

    获得Tom朋友的第二个,以及所在的城市,和城市的美食

    1⃣️获得朋友中的第二个

    select get_json_object('{
      "name":"Tom",
      "age":20,
      "sex":"male",
      "friend":["Jerry","Lilly","Bob"],
      "local":{
        "country":"China",
        "city":"beijing",
        "foods":["dock","douzhi","dianxin"]
      }
    }', '$.friend[1]');
    

    输出:

    Lilly
    

在这里插入图片描述

2⃣️Tom所在的城市

select get_json_object('{
  "name":"Tom",
  "age":20,
  "sex":"male",
  "friend":["Jerry","Lilly","Bob"],
  "local":{
    "country":"China",
    "city":"beijing",
    "foods":["dock","douzhi","dianxin"]
  }
}', '$.local.city');

输出:

beijing

在这里插入图片描述

3⃣️城市的第二个美食

select get_json_object('{
  "name":"Tom",
  "age":20,
  "sex":"male",
  "friend":["Jerry","Lilly","Bob"],
  "local":{
    "country":"China",
    "city":"beijing",
    "foods":["dock","douzhi","dianxin"]
  }
}', '$.local.foods[1]');

输出:

douzhi

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值