我想将简单的JSON字符串(如{"Name":"abc", "age":10}
)转换为相应的JSON对象(不是诸如“Person”之类的自定义Scala对象)。 Scala是否支持将字符串转换为JSON对象的任何内置方法?将JSON字符串转换为Scala中的JSON对象
我不会有任何复杂的JSON操作。我只需要将字符串转换为JSON对象。什么是最简单的方法来做到这一点?我是新来的Scala,所以我很抱歉,如果这个问题听起来很基本。
谢谢。
我想将简单的JSON字符串(如{"Name":"abc", "age":10}
)转换为相应的JSON对象(不是诸如“Person”之类的自定义Scala对象)。 Scala是否支持将字符串转换为JSON对象的任何内置方法?将JSON字符串转换为Scala中的JSON对象
我不会有任何复杂的JSON操作。我只需要将字符串转换为JSON对象。什么是最简单的方法来做到这一点?我是新来的Scala,所以我很抱歉,如果这个问题听起来很基本。
谢谢。
您可能想要使用像Spray JSON这样的库。它提供了很多易于使用的功能来转换和从JSON转换。 如果你决定使用喷雾JSON,你可以这样做:
import spray.json._
// some code here
val json = "your json string here".parseJson
您也可以从play framework使用JSON库,但也可以作为独立的库。这个库基于良好但被遗弃的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"
由于安装您特意询问了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))
注:为斯卡拉2.11的解析器组合子库不再包含在核心语言jar和需要分别添加到您的项目。您可以通过添加以下到您的build.sbt其添加到您的项目:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
您可以在https://github.com/scala/scala-parser-combinators找到库的源代码。
其他许多人已经注意到,外部库通常比原生Scala更好。我个人使用Play JSON。
的parseFull
回报-方面的Some(Map)
,parseRaw
回报的Some(JSONObject)
import scala.util.parsing.json._
val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)
parsed
来讲是把JSONObject
有Scala中的许多JSON库。他们每个人都提供了一个解析函数来从字符串中获取JSON值。你首先需要选择一个lib(播放JSON,Argonaut,...)。 – cchantep
@cchantep Thx,但我想尽可能避免使用外部库。这就是为什么我想知道Scala是否有内置支持。猜猜我只需要使用一个图书馆。 – drunkenfist