• 字符串数组
  • 解析: 使用 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的使用--小记补充相关推荐

  1. php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组

    PHP fgets按行读取字符串和explode分割字符串为数组 file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\ ...

  2. 小案例Josn字符串的生成

    零.前言 1).写了一个安卓的在线播放各个电视台的小demo,放在手机和电视上都能看,但资源写在string.xml里感觉挺low 2).还是转成json吧,维护起来方便些,或放在服务端也挺好,一个一 ...

  3. js 去掉首尾引号 js 去除josn字符串中的全部转义字符 \

    js 去除josn字符串中的全部转义字符 \: let jsonstr = "{\"message\":null,\"respData\":null, ...

  4. PHP 字符串分割 explode 与 str_split 函数

    PHP 字符串分割 用于分割字符串. 相关函数如下: ·        explode():使用一个字符串分割另一个字符串 ·        str_split():将字符串分割到数组中 explod ...

  5. PHP fgets按行读取字符串和explode分割字符串为数组

    file.txt 类型|所在目录|文件|大小|创建时间  File|C:\Program Files\Java\jre7\lib\zi\America\Indiana|Vevay|724|2014-1 ...

  6. json对象和josn字符串有什么区别

    转载自:http://www.cnblogs.com/ilinuxer/ JSON对象 在使用springmvc的时候,后台@RequestBody接收的是一个json格式的字符串,对是字符串. 先介 ...

  7. josn字符串转成数组

    记录一下 jsonstr就是json字符串 var jsonarray = eval('('+jsonstr+')'); 必须记得外面包一个  ' ' 方法一.使用eval() 函数,可计算某个字符串 ...

  8. mysql约束日期_MySQL的约束、事务、字符串、日期、数学相关及其他补充

    MySQL共有5个约束 1 主键约束 primary key(id) 2 外键约束 3 唯一约束 unique 4 非空约束 not null 5 默认约束 default 其他: auto_incr ...

  9. linux expect 字符串,expect spawn、linux expect 用法小记

    使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: 1 #!/usr ...

最新文章

  1. Nmap扫描教程之DNS服务类
  2. shell 输入输出脚本
  3. asp.net2.0中session在ie9下不能保存的问题
  4. python双线性插值函数_双线性插值法原理 python实现
  5. 理科生的人生感悟-01-时间的短暂 - 父亲 - 火车上的颠沛流离
  6. asp.net(c#)网页跳转七种方法小结
  7. Oracle SQL存储过程结构、异常处理示例
  8. 网站能ping通 但是打不开_SEO网站建设的三要素:域名、空间、网站程序
  9. 开心记账本 投资理财两不误
  10. 【优化求解】基于matlab遗传算法求解车辆发车间隔优化问题【含Matlab源码 132期】
  11. 对计算机病毒防治最科学的方法是,计算机病毒防治(复习-3
  12. 图书馆管理系统5W1H分析
  13. pr如何跳到关键帧_必收藏的PR常用快捷键大全
  14. 大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片
  15. 基于WinPcap的网络流量在线分析系统的设计与实现
  16. 小程序商城制作一个需要多少钱?
  17. 十一届蓝桥杯大赛延期—心路历程及退赛
  18. 万向区块链“汽车供应链物流服务平台”获评“2018金融区块链创新应用优秀案例”...
  19. latex安装报错-failed: No such file or directory at G://tlpkg/TeXLive/TLUtils.pm line 1383, <STDIN> line
  20. 多级LC滤波器级联问题

热门文章

  1. STM32 OLED显示屏
  2. 微信小程序系列(4)如何用微信小程序写一个论坛?贴心代码详解(二)评论页
  3. 51-C语言-求斐波那契数的前n项和
  4. openstack连通性检查显示验证失败_SLEEP:睡眠周期和年龄中的EEG连通性
  5. ***Linux文件查找命令find***
  6. 使用echarts 画地球 带lines3D 并有动画效果
  7. options请求是什么?
  8. 众安保险今日正式招股,保险如何结合科技打造新经济?
  9. My97pickerdate设置默认开始日期为当天
  10. spring boot 打包成二进制可以直接执行的jar , 非java -jar 启动方式