关闭

scala解析json数据串

标签: scala
1819人阅读 评论(0) 收藏 举报
分类:

一、主题:使用Scala的类库解析json字符串,避免引入第三方依赖包

二、实现如下:

import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods._

import scala.collection.mutable

/**
  * Created by yangjf on 2017/1/3
  * Update date:
  * Time: 18:23
  * Describle :测试scala解析json数据
  * Result of Test:
  * Command:
  * Email: jifei.yang@ngaa.com.cn
  */
object JsonParseUtils {
  def main(args: Array[String]) {
    val json = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"address\":{\"street\":\"科技园路.\",\"city\":\"江苏苏州\",\"country\":\"中国\"},\"links\":[{\"name\":\"Google\",\"url\":\"http://www.google.com\"},{\"name\":\"Baidu\",\"url\":\"http://www.baidu.com\"},{\"name\":\"SoSo\",\"url\":\"http://www.SoSo.com\"}]}"
    json2Map(json)
  }

  def json2Map(json: String) {
    implicit val formats = DefaultFormats
    //解析结果
    val responseInfo: ResponseInfo = parse(json).extract[ResponseInfo]
    println(responseInfo)
    //数组数据
    val addressArray = responseInfo.address
    val linkArray = responseInfo.links
    println(addressArray)
    for (link <- linkArray) {
      println("linkArray:" + link)
    }

  }

  //二级列表
  case class AddressInfo(street: String, city: String, country: String) {
    override def toString = s"street:$street,  city:$city,  county:$country"
  }

  case class LinkInfo(name: String, url: String) {
    override def toString = s"name:$name,  url:$url"
  }

  //一级列表
  case class ResponseInfo(name: String, url: String, page: Integer,
                          isNonProfit: Boolean, address: AddressInfo,
                          links: Array[LinkInfo]) {
    override def toString = s"name:$name,  url:$url, page:$page,  isNonProfit:$isNonProfit,  address:$address,  links:$links"
  }

}

三、注意

(1)需要有隐式转换:

implicit val formats= DefaultFormats


(2)引入类库包:

import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods._
参考:
http://json4s.org/

https://github.com/json4s/json4s

http://kubicode.me/2015/05/24/scala/Study-And-User-JSON4S/

测试通过,可以按需求修改!

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:665116次
    • 积分:10878
    • 等级:
    • 排名:第1627名
    • 原创:412篇
    • 转载:70篇
    • 译文:37篇
    • 评论:78条
    最新评论