添加依赖

 <!--解析json字符串-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.36</version>
</dependency>

2.解析json字符

2.1可以通过JSON中的parseObject方法,把json字符转转换为一个JSONObject对象

 val jsonOBJ :JSONObject  = JSON.parseObject(json串)

2.2然后可调用JSONObject中的方法,根据key获取值

//获取这种类型的 {"dataId":123,"dataType":"redis"}可以使用getString
val getStr : String = jsonOBJ.getString("dataId")

2.3对于JSON中的套JSON字符串的可以使用

{
"dataId":123,
"dataType":"mysql",
"resultData":[
{"binlog":"mysql_binlog.000","column":[{"name":"single","type":"int(5)"},{"name":"single3","type":"int(5)"} ]},
{"binlog1":"redis_binlog.000","column":[{"name":"single3","type":"int(5)"},{"name":"single3","type":"int(5)"} ]},
]
} //解析稍微复杂类型的可以使用,上面实际上是一条json,为了更好的看清结构所以换了个行 val result : JSONArray= jsonOBJ.getJSONArray("resultData")
//获取result中的 的数组的对应的第一个JSONObject
val nObject: JSONObject = result.getJSONObject(0)
//或取里面的value值
val str = nObject.getString("binlog")
//里面的column对应的还是一个数组类型的当然还可以使用getJSONArray
val column : JSONArray = nObject.getJSONArray("column")
//可以通过上面的getString 方法获取每一个字段

2.4如果想要遍历JSONArray中的所有数据,想不使用getJSONObject方法,但是想要这里面的遍历的所有的JSONObject可以使用

      import scala.collection.JavaConversions._
//可以把Java中的集合转成Scala中的集合
//先把JSONArray转换成迭代器Iterator[AnyRef]类型,再转换为List
转换为List时需要导入 上面的包 val list: List[AnyRef] = result.iterator().toList val listOBJ: List[JSONObject] = list.map(m=>
JSON.parseObject(m.toString)
/*或者使用m.asInstanceOf[JSONObject]*/
)
然后可以使用for循环或者foreach尽心循环

3.实例

json字符串:

{"dataId":123,"dataType":"redis","resultData":
[{"binlog":"mysql_binlog.000","column":[{"columnname":"single_cloum0","columntype":"varchar(10)","index":0,"modified":false,"pk":false,"sqlType":0,"value":"7"},
{"columnname":"single_cloum1","columntype":"varchar(10)","index":1,"modified":false,"pk":false,"sqlType":0,"value":"7"},
{"columnname":"single_cloum2","columntype":"int(5)","index":2,"modified":false,"pk":false,"sqlType":0,"value":"7"},
{"columnname":"single_cloum3","columntype":"int(5)","index":3,"modified":false,"pk":false,"sqlType":0,"value":"7"}],
"db":"demo","eventType":"insert","pkValue":"7","sql":"woshisql","table":"student","time":80146942099474},
{"binlog":"mysql_binlog.001","column":[{"columnname":"single_cloum0","columntype":"varchar(10)","index":0,"modified":false,"pk":false,"sqlType":0,"value":"9"},
{"columnname":"single_cloum1","columntype":"varchar(10)","index":1,"modified":false,"pk":false,"sqlType":0,"value":"9"},
{"columnname":"single_cloum2","columntype":"int(5)","index":2,"modified":false,"pk":false,"sqlType":0,"value":"9"},
{"columnname":"single_cloum3","columntype":"int(5)","index":3,"modified":false,"pk":false,"sqlType":0,"value":"9"}],
"db":"demo","eventType":"insert","pkValue":"9","sql":"woshisql","table":"student","time":80146943574276},]}



解析这一条Json字符串:

import com.alibaba.fastjson.{JSON, JSONArray, JSONObject}

import scala.collection.immutable
import scala.io.Source object JsonDemo02 {
def main(args: Array[String]): Unit = { val lines: Iterator[String] = Source.fromFile("D:\\json2.txt").getLines()
val list: List[String] = lines.toList
val jSONObjects: immutable.Seq[JSONObject] = list.map(x => { //取出每一条数据,把数据转换成JSONObject类型
println(x)
JSON.parseObject(x)
})
jSONObjects.foreach(t=>{
val str: String = t.getString("resultData") //取出resultData的数据,
val oNArray: JSONArray = t.getJSONArray("resultData")
//result对应的数据是一个 数组中 存的是 [{json字符串},{json字符串}] // /想要遍历JSONArray中的数据可以使用
import scala.collection.JavaConversions._ //可以把Java中的集合转成Scala中的集合
val list: List[AnyRef] = oNArray.iterator().toList
val listOBJ: List[JSONObject] = list.map(m=> JSON.parseObject(m.toString)/*或者使用m.asInstanceOf[JSONObject]*/) val str1 = oNArray.getString(0)
//也可以通过getJSONObject(下标) 获取相应的JSONObject
val nObject: JSONObject = oNArray.getJSONObject(1)
//获取column
val value = nObject.getString("column")
val array = nObject.getJSONArray("column")
println(str1)
println(value)
println(array.getString(0))
val on1 = array.getJSONObject(0)
val str3 = on1.getString("modified")
println(str3)
})
}
}

Scala中使用fastJson 解析json字符串的更多相关文章

  1. FastJSON解析Json字符串(反序列化为List、Map)

    在日常开发与数据库打交道的时候,常有以Json格式的字符串存储到数据库的情况,当在Java程序中获取到对应的Json格式的String字符串后,如何才能转换为我们想要的数据格式(比如转换成Java中的 ...

  2. 用阿里fastJson解析Json字符串

    一下总结来自工作代码: 1.第一种情况: 通过服务器端发送http请求获取的接送字符串. String jsonStr = HttpRequestUtil.sendGet(config.getAddr ...

  3. java解析Json字符串之懒人大法

    面对Java解析Json字符串的需求,有很多开源工具供我们选择,如google的Gson.阿里巴巴的fastJson.在网上能找到大量的文章讲解这些工具的使用方法.我也是参考这些文章封装了自己的Jso ...

  4. fastjson解析json数组

    1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...

  5. FastJson解析Json,封装JavaBean对象

    获取到前端的Json,后台对应封装JavaBean对象,对其解析赋值 获取到前端的json,对其进行分析 1.获取最外层前端json对应得JavaBean (1)未分析格式的json串 (2)初步格式 ...

  6. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  7. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  8. C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  9. 解析Json字符串的三种方法

    在很多时候,我们的需要将类似 json 格式的字符串数据转为json, 下面将介绍日常中使用的三种解析json字符串的方法 1.首先,我们先看一下什么是 json 格式字符串数据,很简单,就是 jso ...

随机推荐

  1. 深入理解linux-free命令原理(2)

    linux free 命令用法说明 概述: 这篇文章比较深入的从free为起点  折射出的一些概念:比如  buff/cache是怎么一回事[涉及内存页等话题]:  available这个参数与fre ...

  2. 「译」使用 System.Net.Http.Json 高效处理Json

    在这篇文章,我将介绍一个名为 System.Net.Http.Json 的扩展库,它最近添加到了 .NET 中,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用. 在此之前我们是如 ...

  3. TurtleBot3使用课程-第二节a(北京智能佳)

    目录 1.[第3类]LRF(LDS)传感器 2 1.1 传感器包安装 2 1.1.1 传感器端口访问设置 2 1.1.2 运行hlds_laser_publisher节点 2 1.1.3 在RViz中 ...

  4. 【递归】P1706全排列问题

    题目相关 题目描述 输出自然数 1 到 n所有不重复的排列,即 n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 一个整数 n**. 输出格式 由 1∼n 组成的所有不重复的数字 ...

  5. 【老孟Flutter】为什么 build 方法放在 State 中而不是在 StatefulWidget 中

    老孟导读:此篇文章是生命周期相关文章的番外篇,在查看源码的过程中发现了这一有趣的问题,欢迎大家一起探讨. Flutter 中Stateful 组件的生命周期:http://laomengit.com/ ...

  6. Maven+Spring 框架,ModelAndView在页面取值不成功

    如果创建的是maven project , maven生成的web.xml是这样的: 但是这样是不对的,应该修改成: 下面是代码: <?xml version="1.0" e ...

  7. LeetCode662 二叉树最大宽度

    给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义为两个端点(该层 ...

  8. 9. 细节见真章,Formatter注册中心的设计很讨巧

    目录 本文提纲 版本约定 你好,我是A哥(YourBatman). Spring设计了org.springframework.format.Formatter格式化器接口抽象,对格式化器进行了大一统, ...

  9. 【EXP】Oracle多表导出问题

    有些时候,需要导入某个用户的一些相关表.但是不知道用户的用户名和密码.这样就很尴尬 但是如果手上有dba权限的用户的话,就很方便的能导出了 先要知道多表导出的语句 exp system/123456 ...

  10. 【葵花宝典】All-in-One模式安装KubeSphere

    1.准备 Linux 机器 2.google api受限下载 KubeKey export KKZONE=cn curl -sfL https://get-kk.kubesphere.io | VER ...