Scala:将JSON直接解析为案例类

SRo*_*mes 34 parsing json scala case-class scala-2.10

给定一个JSON字符串,以及一个与之对应的case类,将JSON解析为case类的简单方法是什么?有许多库可用,但似乎Scala现在可以开箱即用.

如果应该将JSON解析为案例类的列表呢?

更新:

杰克逊似乎被抛弃了,我不想安装完整的Play或Lift框架或其他任何重型框架.

And*_*ann 20

有几个框架可以完全做到这一点.

JSON4s

JSON4s非常成熟,支持jackson原生 JSON-Parser.在许多项目中用它来取代jerkson.

https://github.com/json4s/json4s

玩-JSON

可以在没有完整播放堆栈的情况下使用.作为类型安全游戏项目的一部分提供大力支持.

http://www.playframework.com/documentation/2.0/ScalaJson

斯卡拉酸洗

序列化框架.可以选择序列化/反序列化为JSON.

https://github.com/scala/pickling

喷JSON

可以进行searialize和反序列化.需要知道反序列化的参数数量很难.

https://github.com/spray/spray-json


dra*_*nxo 10

我使用过https://github.com/json4s/json4s,到目前为止只有抱怨是https://github.com/json4s/json4s/issues/137

import org.json4s._
import org.json4s.native.JsonMethods._

implicit val formats = DefaultFormats

case class ParsedPage(crawlDate: String, domain:String, url:String, text: String)

val js = """ {
"crawlDate": "20150226",
"domain": "0x20.be",
"url": "http://0x20.be/smw/index.php?title=99_Bottles_of_Beer&oldid=6214",
"text": "99 Bottles of Beer From Whitespace (Hackerspace Gent) Revision as of 14:43, 8 August 2012 by Hans ( Talk | contribs ) 99 Bottles of Beer Where: Loading map... Just me, with 99 bottles of beer and some friends. Subpages"
}"""


parse(js).extract[ParsedPage]
Run Code Online (Sandbox Code Playgroud)