Josn字符串处理 explode/from_json/get_json_object的使用--小记补充
- 字符串数组
- 解析: 使用 from_json 将字符串转为数组,再使用 explode 切分数组 获取最终结果
[{"real_name":"饶**","user_photo":null,"gender":"男","id_card_no":"5224********3614","start_date":"2016-10-26T00:00:00","expiry_date":"2036-10-26T00:00:00"},{"real_name":"陈**","user_photo":null,"gender":"男","id_card_no":"522427********712","start_date":"2016-01-27T00:00:00","expiry_date":"2026-01-27T00:00:00" }
]
val jsonstr ="""|[{"real_name":"饶祥雨","user_photo":null,"gender":"男","birthday":"1989-10-13T00:00:00","id_card_no":"5224********3614","start_date":"2016-10-26T00:00:00","expiry_date":"2036-10-26T00:00:00"},{"real_name":"陈树林","user_photo":null,"gender":"男","birthday":"1995-06-19T00:00:00","id_card_no":"522427********712","start_date":"2016-01-27T00:00:00","expiry_date":"2026-01-27T00:00:00"}]|""".stripMarginval josnsql=s"""| select| 1 as id,| '${jsonstr }' as data|""".stripMarginval resultDS = spark.sql(josnsql)import spark.implicits._import org.apache.spark.sql.types._val jsonDF = resultDS.select(functions.from_json($"data",ArrayType(StructType(StructField("real_name", StringType):: StructField("gender", StringType)::StructField("id_card_no", StringType):: Nil))).as("dataArray"),$"id").withColumn("items",functions.explode(functions.col("dataArray"))).select($"id",$"items.*")jsonDF.show(100)jsonDF.printSchema()
-------------------结果----------------------------------------------------------------+---+---------+------+------------------+
| id|real_name|gender| id_card_no|
+---+---------+------+------------------+
| 1| 饶**| 男|5224********3614|
| 1| 陈**| 男|522427********712|+---+---------+------+------------------+root|-- id: integer (nullable = false)|-- real_name: string (nullable = true)|-- gender: string (nullable = true)|-- id_card_no: string (nullable = true)
- 简单json
- 解析 直接使用get_json_object()方法即可
get_json_object(json_txt, path) - Extracts a json object from path.
{"project_name":"巍山新天地项目","project_type":1,"principal_name":"某某","principal_phone":"13000000000","province_code":"330000","city_code":"330700","county_code":"330783"
}
val jsonsql2="""|{"project_name":"巍山新天地项目","project_type":1,"principal_name":"某某","principal_phone":"13000000000","province_code":"330000","city_code":"330700","county_code":"330783"}|""".stripMarginimport spark.implicits._val JSONDF = Seq ((0, s"""${jsonsql2}""")).toDF("id", "json")val resultDS = JSONDF.select(functions.get_json_object($"json","$.project_name").as("project_name"),functions.get_json_object($"json","$.project_type").as("project_type"),functions.get_json_object($"json","$.principal_phone").as("principal_phone"))resultDS.show()resultDS.printSchema()
-----------------------------------------结果-------------------------------+------------+------------+---------------+
|project_name|project_type|principal_phone|
+------------+------------+---------------+
| 巍山新天地项目| 1| 13000000000|
+------------+------------+---------------+root|-- project_name: string (nullable = true)|-- project_type: string (nullable = true)|-- principal_phone: string (nullable = true)
Josn字符串处理 explode/from_json/get_json_object的使用--小记补充相关推荐
- php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组
PHP fgets按行读取字符串和explode分割字符串为数组 file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\ ...
- 小案例Josn字符串的生成
零.前言 1).写了一个安卓的在线播放各个电视台的小demo,放在手机和电视上都能看,但资源写在string.xml里感觉挺low 2).还是转成json吧,维护起来方便些,或放在服务端也挺好,一个一 ...
- js 去掉首尾引号 js 去除josn字符串中的全部转义字符 \
js 去除josn字符串中的全部转义字符 \: let jsonstr = "{\"message\":null,\"respData\":null, ...
- PHP 字符串分割 explode 与 str_split 函数
PHP 字符串分割 用于分割字符串. 相关函数如下: · explode():使用一个字符串分割另一个字符串 · str_split():将字符串分割到数组中 explod ...
- PHP fgets按行读取字符串和explode分割字符串为数组
file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\America\Indiana|Vevay|724|2014-1 ...
- json对象和josn字符串有什么区别
转载自:http://www.cnblogs.com/ilinuxer/ JSON对象 在使用springmvc的时候,后台@RequestBody接收的是一个json格式的字符串,对是字符串. 先介 ...
- josn字符串转成数组
记录一下 jsonstr就是json字符串 var jsonarray = eval('('+jsonstr+')'); 必须记得外面包一个 ' ' 方法一.使用eval() 函数,可计算某个字符串 ...
- mysql约束日期_MySQL的约束、事务、字符串、日期、数学相关及其他补充
MySQL共有5个约束 1 主键约束 primary key(id) 2 外键约束 3 唯一约束 unique 4 非空约束 not null 5 默认约束 default 其他: auto_incr ...
- linux expect 字符串,expect spawn、linux expect 用法小记
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: 1 #!/usr ...
最新文章
- Nmap扫描教程之DNS服务类
- shell 输入输出脚本
- asp.net2.0中session在ie9下不能保存的问题
- python双线性插值函数_双线性插值法原理 python实现
- 理科生的人生感悟-01-时间的短暂 - 父亲 - 火车上的颠沛流离
- asp.net(c#)网页跳转七种方法小结
- Oracle SQL存储过程结构、异常处理示例
- 网站能ping通 但是打不开_SEO网站建设的三要素:域名、空间、网站程序
- 开心记账本 投资理财两不误
- 【优化求解】基于matlab遗传算法求解车辆发车间隔优化问题【含Matlab源码 132期】
- 对计算机病毒防治最科学的方法是,计算机病毒防治(复习-3
- 图书馆管理系统5W1H分析
- pr如何跳到关键帧_必收藏的PR常用快捷键大全
- 大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片
- 基于WinPcap的网络流量在线分析系统的设计与实现
- 小程序商城制作一个需要多少钱?
- 十一届蓝桥杯大赛延期—心路历程及退赛
- 万向区块链“汽车供应链物流服务平台”获评“2018金融区块链创新应用优秀案例”...
- latex安装报错-failed: No such file or directory at G://tlpkg/TeXLive/TLUtils.pm line 1383, <STDIN> line
- 多级LC滤波器级联问题
热门文章
- STM32 OLED显示屏
- 微信小程序系列(4)如何用微信小程序写一个论坛?贴心代码详解(二)评论页
- 51-C语言-求斐波那契数的前n项和
- openstack连通性检查显示验证失败_SLEEP:睡眠周期和年龄中的EEG连通性
- ***Linux文件查找命令find***
- 使用echarts 画地球 带lines3D 并有动画效果
- options请求是什么?
- 众安保险今日正式招股,保险如何结合科技打造新经济?
- My97pickerdate设置默认开始日期为当天
- spring boot 打包成二进制可以直接执行的jar , 非java -jar 启动方式