我想将一个简单的JSON字符串(如{"Name":"abc", "age":10}
)转换为相应的JSON对象(而不是自定义的Scala对象,例如" Person")。 Scala是否支持将String转换为JSON对象的任何内置方法?
我不会有任何复杂的JSON操作。我只需要将String转换为JSON对象。最简单的方法是什么?我是Scala的新手,所以如果这个问题听起来很基本,我会道歉。
感谢。
答案 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