不说了,上代码:
package com.rhb
import net.minidev.json.{JSONArray, JSONObject}
import net.minidev.json.parser.JSONParser
object parseJsonStr {
def main(args: Array[String]): Unit = {
val jsonParse = new JSONParser()
println("====================第一种格式解析==========================")
val s = """[{"db":"test","table":"xt6"},{"db":"test","table":"xt7"}]"""
val jsonObj = jsonParse.parse(s).asInstanceOf[JSONArray]
for(j<-jsonObj.toArray()){
println(j.asInstanceOf[JSONObject].get("db"),j.asInstanceOf[JSONObject].get("table"))
}
println("=====================第二种格式解析==========================")
val s2 = """{"db":"test","table":"xxx"}"""
val jsonObj2 = jsonParse.parse(s2).asInstanceOf[JSONObject]
println(jsonObj2.get("db"))
println("=====================第三种格式解析==========================")
// 被中括号[]括起来的数据都要作为Json数组类型
val s3 = """{"db":"test","name":["ren","sss","tang"]}"""
val jsonObj3 = jsonParse.parse(s3).asInstanceOf[JSONObject]
val ls = jsonObj3.get("name").asInstanceOf[JSONArray]
println(ls.toArray()(0))
println("=====================第四种格式解析==========================")
val s4 = """{"db":"test","name":["ren","sss","tang"],"other":{"name":"school","class":2}}"""
val jsonObj4 = jsonParse.parse(s4).asInstanceOf[JSONObject]
val other = jsonObj4.get("other").asInstanceOf[JSONObject]
println(other.getAsNumber("class"))
println("====================样例类解析JSON===========================")
import org.json4s._
import org.json4s.jackson.JsonMethods._
implicit val formats = DefaultFormats
val s5 = """{"db":"test","name":["ren","sss","tang"],"other":{"name":"school","class2":2}}"""
val r = parse(s5).extract[jsonClass]
println(r.other.name)
}
case class jsonClass(
db:String,
name:List[String],
other: secJsonClass
)
case class secJsonClass(
name:String,
class2:Int
)
}
# 结果如下:
====================第一种格式解析==========================
(test,xt6)
(test,xt7)
=====================第二种格式解析==========================
test
=====================第三种格式解析==========================
ren
=====================第四种格式解析==========================
2
====================样例类解析JSON===========================
school
Process finished with exit code 0
json 依赖包(样例类解析方式不需要此依赖包)
<dependency>
<groupId>net.minidev</groupId>
<artifactId>json-smart</artifactId>
<version>2.3</version>
</dependency>