scala 解析json串

不说了,上代码:

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容