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

dru*_*ist 16 json scala

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

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

谢谢.

Dem*_*ots 22

注意:从技术上讲,不再有核心Scala"本机"方式来解析JSON.您应该使用外部支持的库,如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}""")
Run Code Online (Sandbox Code Playgroud)

parsed 将承担价值: Some(Map(Name -> abc, age -> 10.0))

  • JSON 自 2.11 起已弃用 `@scala.deprecated("此对象将被删除。", "2.11.0") object JSON extends scala.util.parsing.json.Parser {` (2认同)

Den*_*sca 8

您可能希望使用类似Spray JSON的库.它提供了许多易于使用的功能,可以转换为JSON和从JSON转换.如果您决定使用Spray JSON,您可以这样做:

import spray.json._
// some code here
val json = "your json string here".parseJson
Run Code Online (Sandbox Code Playgroud)

  • **libraryDependencies += "io.spray" %% "spray-json" % "1.3.5"** 是库依赖 (2认同)

Ole*_*leg 6

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

import play.api.libs.json._

val json: JsValue = Json.parse("""{"a":1}""")
Run Code Online (Sandbox Code Playgroud)

要在没有播放的情况下使用此lib,只需使用string将其安装在build.sbt中

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"
Run Code Online (Sandbox Code Playgroud)