「Hive」json数据解析get_json_object函数的用法

应用场景:提取以json字符串的方式存储的数据。

用法:get_json_object(expr, path)

  • expr:包含格式正确的 JSON 的 STRING 表达式(或字段名)。
  • path:包含格式正确的 JSON 路径的 STRING 文本。

返回值:一个STRING类型。如果找不到该对象,则返回 NULL。

示例

        在数据表test中有一列 jsonData,其数据如下:

jsonData = '{
    "ID":188,
    "message":{
        "name":"Alex",
        "location":[{"county":"日本","city":"东京"},
                    {"county":"韩国","city":"首尔"}]
    }    
}'


--PS:jsonData列数据为字符串格式,外面是**单引号**,里面是**双引号**(这个不能弄错了,否则不对)


1.提取jsonData第一层数据ID

select get_json_object(jsonData,'$.ID') from test

--输出
>188

2.提取jsonData第二层数据name

select get_json_object(jsonData,'$.message.name') from test

--输出
>Alex

3.提取jsonData第二层数据location的第一项

select get_json_object(jsonData,'$.message.location[0]') from test

--输出
>{"county":"日本","ctiy":"东京"}

4.提取jsonData第二层数据location的第一项的city

select get_json_object(jsonData,'$.message.location[0].city') from test

--输出
>东京

5.提取jsonData第三层数据city

select get_json_object(jsonData,'$.message.location.city') from test

--输出
>["东京","首尔"]

6.提取json字符串的第一个json对象

select get_json_object('[{"name":"悟空","sex":"男","age":"26"},{"name":"悟能","sex":"男","age":"24"}]','$[0]');

--输出
>{"name":"大郎","sex":"男","age":"25"}
————————————————


———————————————————————————————————————————
版权声明:本文为CSDN博主「Asher117」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Asher117/article/details/107984650

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值