scala的Java开发工具之处理json格式利器的示例

  介绍

这篇文章主要介绍Java开发工具之scala处理json格式利器的示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1。为什么是json4s

从json4s的官方描述

此时至少有6 json库scala,不包括java json库。所有这些库都有非常相似的AST。该项目旨在提供一个AST其他scala使用json库。此刻
的方法被使用AST取自lift-json和本机方案实际上是lift-json但电梯外的项目。

在scala库中,至少有6个json库,并且不包括java的json库,这些库都有着类似的抽象语法树AST, json4s的目的就是为了使用简单的一种语法支持这些json库,因此说json4s可以说是一种json的规范处理,配合scala开发过程中极其简介的语法特性,可以轻松地实现比如json合并,json的diff操作,可以方便地处jsonArray理的字符串,所以如果使用scala,那么json4s一定不能错过,在实际场景下使用json处理数据很常见,比如火花开发中处理原始json数据等等,开始上手可能看起来比较复杂,但是用起来你会很爽。

2。json4s的数据结构

json4s包括10个类型和一个类型类型的对象,分别如下

case  object  JNothing  extends  JValue //, & # 39;零度# 39;for  JValue   case  object  JNull  extends  JValue   case  class  JString (s:字符串),extends  JValue   case  class  JDouble (num:双),extends  JValue   case  class  JDecimal (num:, BigDecimal), extends  JValue   case  class  JInt (num:,长整型数字),extends  JValue   case  class  JLong (num:长),extends  JValue   case  class  JBool(价值:布尔),extends  JValue   case  class  JObject (obj:列表[JField]), extends  JValue   case  class  JArray(加勒比海盗:列表[JValue]), extends  JValue   ,   type  JField =,(字符串,JValue)

可以看的到,他们都继承自JValue, JValue是json4s里面类似于java的对象地位,而JField是用来一次性匹配json的关键,对价值而准备的。

3。json4s的实践

下面来看,我们如何来使用json4s

& lt; dependency>   ,& lt; groupId> org.json4s   ,& lt; artifactId> json4s-native_2.11   ,& lt; version> 3.7.0-M6   & lt;/dependency>

看下面的代码即可,注释写的比较清晰,一般来说json的使用无外乎是字符串到对象或者对象到字符串,而字符串到对象可以用例类也可以用原始的比如上面提到的类

package  com.hoult.scala.json4s   import  org.json4s._   import  org.json4s.JsonDSL._   import  org.json4s.native.JsonMethods._      object  Demo1  {   ,def 主要(args:数组[String]):, Unit =, {      ,//解析方法表示从字符串到json对象   ,val  person =, parse (   “才能”;“   |才能{“name":“Toy",“price": 35.35}   |“才能”;“.stripMargin,, useBigDecimalForDouble =, true)   ,//1。模式匹配提取,,\表示提取   ,val  JString(名字),=,(\ person “name")   ,println(名字)      ,//2.提取[String]取值//,implicit  val  formats =org.json4s.Formats   ,implicit  val  formats =DefaultFormats   ,val  name2 =, (\ person “name") .extract(字符串)   ,val  name3 =, (\ person “name") .extractOpt(字符串)   ,val  name4 =, (\ person “name") .extractOrElse (“”)//大敌;3。多层嵌套取值   ,val  parseJson: JValue =,解析(   “才能”;“   |才能{“name": {“tome":“new"},“price": 35.35}   |“才能”;“.stripMargin,, useBigDecimalForDouble =, true)      ,//3.1逐层访问   ,val  value =, (\ parseJson “name", \,“tome") .extract(字符串)//3.2大敌;循环访问   ,val  value2 =,(时间\ \ parseJson “tome")   ,println (value2)//4。嵌套json串解析   ,val  json =, parse (   “才能”;“   ,,{,“name":“joe",   ,才能“children":,   ,,,{   ,,,“name":,“Mary"   ,,,“age": 20   ,,,},   ,,,{   ,,,“name":,“Mazy"   ,,,“age": 10   ,,,}   ,,,)   ,,}   “““才能)//,println (json  \,“children")      ,//模式匹配   ,for  (JArray(孩子),& lt;作用;json), println(孩子)      ,//提取object 下,某字段的值   ,val  ages =, for  {   JObject才能(孩子),& lt;作用;json   JField才能(“age",, JInt(年龄),& lt;作用;儿童   ,},油品收率的年龄      ,println(年龄)      ,//嵌套取数组中某个字段值,并添加过滤   ,val  nameAges =, for  {   JObject才能(孩子),& lt;作用;json   JField才能(“name",, JString(名字)),& lt;作用;儿童   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

scala的Java开发工具之处理json格式利器的示例