android json字符串转成json对象_【hive】解析JSON格式字符串
莫听穿林打叶声|何妨吟啸且徐行
以下是本期内容:
hive中解析简单JSON字符串,以及解析比较复杂的嵌套JSON格式的字符串
本文大纲:
01.get_json_object解析json中的单个属性02.json_tuple解析json中的多个属性03.解析多层嵌套Json
正文
- 01 解析json中的单个属性
select get_json_object(user_log,'$.source_id') from user_log_list
使用$表示json变量,然后用 . 读取对象;
使用get_json_object()的时候一次只能解析json对象里的一个字段。
- 02 解析json中的多个属性
select json_tuple(user_log,'source_id','properties','events') from user_log_list
- 03 解析多层嵌套Json
单条JSON日志user_log的格式如下:
{ "source_id":1000, "properties":{ "user_id":"10245784", "device_id":"1001245" }, "events":[ { "event_id":2, "event_data":{ "mode":6, "intro":"想要的都在这里,一键满足需求" } }, { "event_id":4, "event_data":{ "mode":6, "intro":"7X24小时为您服务是我们的宗旨" } } ]}
1、LATERAL VIEW
我们通过多次使用Lateral view 语句解析多层嵌套的json,“lateral view”表示“横向视图”,“lateral”作为动词时表示“横向传球”。
我们看下面这张json解析逻辑图可以看出,解析完一层后,把解析出来的字段添加至原有视图的右侧(此处的逻辑类似于select * from 原有视图 left outer join 新解析出来的字段,通过这种方式把一行数据拆分成多行),继续解析下一层,以此类推。
SELECT user_log,a.source_id,a.properties,a.events FROM user_log_listLATERAL VIEW json_tuple(user_log,'source_id','properties','events') a AS source_id,properties,events--视图别名为a,生成新列的别名为source_id,properties,events
注意:在使用lateral view的时候必须指定视图别名和生成新列的别名
2、LATERAL VIEW explode
events并不是map(字典)格式,而是数组,无法通过json_tuple方法进行解析,所以我们用explode方法来解析数组。
SELECT user_log,a.source_id,b.user_id,b.device_id,d.event_id,d.event_data FROM user_log_listLATERAL VIEW json_tuple(user_log,'source_id','properties','events') a AS source_id,properties,eventsLATERAL VIEW explode(split(regexp_replace(regexp_extract(b.events,'^[(.+)]$',1),'},{', '}||{'),'||')) c AS list
解释:
①
regexp_extract(b.events,'^[(.+)]$',1)
其中正则表达式'^[(.+)]$'代表的是在b.events中匹配出以"["开头且以"]"结尾的中间的所有字符,index指定为1表示返回正则表达式中第一个() 对应的结果。
②
regexp_replace(regexp_extract(b.events,'^[(.+)]$',1),'},{', '}||{')
将数组中分隔各元素的逗号,替换成双竖杠。
③
split(regexp_replace(regexp_extract(b.events,'^[(.+)]$',1),'},{', '}||{'),'||')
表示以双竖杠分割字符串,返回结果为一个数组。
④
LATERAL VIEW explode(split(regexp_replace(regexp_extract(b.events,'^[(.+)]$',1),'},{', '}||{'),'||'))
用explode解析该数组,结合LATERAL VIEW生成新的横向视图。
⑤上述表达式中的双反斜杠为hive里的转义字符。
点击了解更多。。。
android json字符串转成json对象_【hive】解析JSON格式字符串相关推荐
- jQuery.parseJSON(json)方法将字符串转换成js对象
原文地址为: jQuery.parseJSON(json)方法将字符串转换成js对象 概述 接受一个JSON字符串,返回解析后的对象. 传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的 ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- JSON字符串转换成List对象集合
前两天被一个很没意思的问题给难住了,看来最近没有复习巩固,有些知识都忘了怎么运用了. 简单说下: 有一个json字符串,我想通过jackson把json字符串转换成list对象集合,网上找了很多,但都 ...
- Java 读取 JSON 文件转成 Map 对象
Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...
- Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象。
Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象.
- 把url字符串转成url对象
把url字符串转成url对象 方法一: let str="http://www.baidu.com:80/app/html/index.html?a=1&b=2#title" ...
- 05 HTML字符串转换成jQuery对象、绑定数据到元素上
1 要求 将一段 HTML脚本 封装成一个字符串,将这个字符串转换成一个jQuery对象:然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str = '<div i ...
- js如何把字符串转成数组对象
js如何把字符串转成数组对象 //数据格式如下: list: [{radio: "",formInline: "1,2,3,4", //对此字符串做处理},{r ...
- cjson 对象是json数组型结构体_C语言 - cJSON解析特定格式 含有数组array类型的数据...
在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...
- 学会Hive解析Json数组
在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析.接下来就聊聊Hive中是如何 ...
最新文章
- java可以多重继承吗_Java中的多重继承与组合vs继承
- python maketrans_Python maketrans()方法
- Linux基础之网络配置
- ttk python_【转】Python GUI进阶(ttk)—让界面变得更美
- 动态规划和贪心算法的区别
- Java IO: Reader And Writer
- 极光推送android点击跳转页面,app关闭时点击推送消息实现页面跳转
- 对于大家族Sring这些你究竟了解吗
- Java设计模式学习02——工厂模式
- 敏捷开发 —— TDD(测试驱动开发)
- Server concepts 详解
- 初识edb debugger
- Windows相关产品密钥
- 模拟电路实验 02 - | 阻容耦合放大电路
- 亿发软件:中大型仓库进出货管理系统解决方案,定制软件让仓储作业高效便捷
- 【转】楼天城楼教主的acm心路历程(作为励志用)
- 英语知识点整理day04
- Android 输入法框架流程整理
- 字符串转换成十进制整数
- 【CCF会议期刊推荐】CCF推荐国际学术期刊/会议(计算机科学理论)
热门文章
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_2_字符输入流读取字符数据...
- javaweb filter
- 八.nginx网站服务实践应用
- 剑指Offer_编程题_16
- 深度学习如何入门?知乎
- 2018. 2.4 Java中集合嵌套集合的练习
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
- BZOJ 1067 降雨量(RMQ-ST+有毒的分类讨论)
- httpHandler实现.Net无后缀名Web访问
- javascript 3月17日