在Scala中将JSON字符串转换为JSON对象

时间:2015-06-17 07:22:19

标签: json scala

我想将一个简单的JSON字符串(如{"Name":"abc", "age":10})转换为相应的JSON对象(而不是自定义的Scala对象,例如" Person")。 Scala是否支持将String转换为JSON对象的任何内置方法?

我不会有任何复杂的JSON操作。我只需要将String转换为JSON对象。最简单的方法是什么?我是Scala的新手,所以如果这个问题听起来很基本,我会道歉。

感谢。

4 个答案:

答案 0 :(得分:20)

注意:从技术上讲,不再有核心Scala" native"解析JSON的方法。您应该使用外部支持的库,如Spray JSON或Play JSON。

从Scala 2.11开始,解析器 - 组合器库不再包含在核心语言jar中,需要单独添加到项目中。此外,JSON解析器已在社区支持的解析器 - 组合器库版本中弃用。我不建议使用这个库。

如果您选择,还可以将以下内容添加到项目中:

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"

您可以在https://github.com/scala/scala-parser-combinators找到该库的源代码。

由于您专门询问了Scala用于JSON解析的本机工具 - 您正在寻找的包是scala.utils.parsing.json。以下内容应该有效:

import scala.util.parsing.json._

val parsed = JSON.parseFull("""{"Name":"abc", "age":10}""")

parsed将采用以下值:Some(Map(Name -> abc, age -> 10.0))

答案 1 :(得分:8)

您可能想要使用像Spray JSON这样的库。它提供了许多易于使用的功能,可以转换为JSON和从JSON转换。 如果您决定使用Spray JSON,您可以这样做:

import spray.json._
// some code here
val json = "your json string here".parseJson

答案 2 :(得分:6)

此外,您可以使用play framework中的Json库,但也可以用作独立的lib。这个库基于良好但被遗弃的Jerkson项目,它是围绕超快Java基于JSON库的杰克逊的Scala包装器。它具有非常丰富和良好的文档工具集,可用于使用JSON - transofrmers,验证器等。

import play.api.libs.json._

val json: JsValue = Json.parse("""{"a":1}""")

要在没有游戏的情况下使用此lib,只需将其安装在带有字符串

的build.sbt中
libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"

答案 3 :(得分:2)

parseFull返回Some(Map)parseRaw返回Some(JSONObject)

import scala.util.parsing.json._

val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)

parsed是JSONObject