我想将一个简单的JSON字符串(如 {"Name":"abc", "age":10} )转换为相应的JSON对象(而不是自定义的Scala对象,如"Person") . Scala是否支持将String转换为JSON对象的任何内置方法?
{"Name":"abc", "age":10}
我不会有任何复杂的JSON操作 . 我只需要将String转换为JSON对象 . 最简单的方法是什么?我是Scala的新手,所以如果这个问题听起来很基本,我会道歉 .
谢谢 .
Note: 从技术上讲,不再存在解析JSON的核心Scala "native"方式 . 您应该使用外部支持的库,如Spray JSON或Play JSON .
从Scala 2.11开始,解析器 - 组合器库不再包含在核心语言jar中,需要单独添加到项目中 . 此外,JSON解析器已在社区支持的解析器 - 组合器库版本中弃用 . 我不建议使用这个库 .
如果您选择,您仍然可以将它添加到您的项目中,方法是将以下内容添加到build.sbt中:
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))
parsed
Some(Map(Name -> abc, age -> 10.0))
您可能想要使用像Spray JSON这样的库 . 它提供了许多易于使用的功能,可以转换为JSON和从JSON转换 . 如果您决定使用Spray JSON,您可以这样做:
import spray.json._ // some code here val json = "your json string here".parseJson
您也可以使用play framework中的Json Library,但也可以用作独立的lib . 这个库基于良好但被遗弃的Jerkson项目,它是围绕超快Java基于JSON库的 Jackson 的Scala包装器 . 它具有非常丰富和良好的文档工具集,可用于使用JSON - transofrmers,验证器等 .
import play.api.libs.json._ val json: JsValue = Json.parse("""{"a":1}""")
要在没有播放的情况下使用此lib,只需使用string将其安装在build.sbt中
libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"
parseFull 以 Some(Map) , parseRaw 为单位返回 Some(JSONObject)
parseFull
Some(Map)
parseRaw
Some(JSONObject)
import scala.util.parsing.json._ val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)
parsed 是JSONObject
4 回答
Note: 从技术上讲,不再存在解析JSON的核心Scala "native"方式 . 您应该使用外部支持的库,如Spray JSON或Play JSON .
从Scala 2.11开始,解析器 - 组合器库不再包含在核心语言jar中,需要单独添加到项目中 . 此外,JSON解析器已在社区支持的解析器 - 组合器库版本中弃用 . 我不建议使用这个库 .
如果您选择,您仍然可以将它添加到您的项目中,方法是将以下内容添加到build.sbt中:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
您可以在https://github.com/scala/scala-parser-combinators找到该库的源代码 .
由于您特别询问了Scala用于JSON解析的本机工具 - 您正在寻找的包是scala.utils.parsing.json . 像下面这样的东西应该工作:
parsed
将取值:Some(Map(Name -> abc, age -> 10.0))
您可能想要使用像Spray JSON这样的库 . 它提供了许多易于使用的功能,可以转换为JSON和从JSON转换 . 如果您决定使用Spray JSON,您可以这样做:
您也可以使用play framework中的Json Library,但也可以用作独立的lib . 这个库基于良好但被遗弃的Jerkson项目,它是围绕超快Java基于JSON库的 Jackson 的Scala包装器 . 它具有非常丰富和良好的文档工具集,可用于使用JSON - transofrmers,验证器等 .
要在没有播放的情况下使用此lib,只需使用string将其安装在build.sbt中
parseFull
以Some(Map)
,parseRaw
为单位返回Some(JSONObject)
parsed
是JSONObject