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

在Scala中将JSON字符串转换为JSON对象,json,scala,Json,Scala,我想将一个简单的JSON字符串,如{“Name”:“abc”,“age”:10}转换为相应的JSON对象(而不是像“Person”这样的定制Scala对象)。Scala是否支持任何内置方法将字符串转换为JSON对象 我不会有任何复杂的JSON操作。我只需要将字符串转换为JSON对象。最简单的方法是什么?我是Scala的新手,如果这个问题听起来很基本,我很抱歉 谢谢。您可能想使用像这样的库。它提供了许多易于使用的功能,用于在JSON之间进行转换。 如果您决定使用Spray JSON,您可以这样做:

我想将一个简单的JSON字符串,如
{“Name”:“abc”,“age”:10}
转换为相应的JSON对象(而不是像“Person”这样的定制Scala对象)。Scala是否支持任何内置方法将字符串转换为JSON对象

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


谢谢。

您可能想使用像这样的库。它提供了许多易于使用的功能,用于在JSON之间进行转换。 如果您决定使用Spray JSON,您可以这样做:

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

您也可以从使用Json库,但也可以作为独立库使用。该库基于良好但被废弃的项目,该项目是围绕基于Java的超高速JSON库Jackson的Scala包装器。它有非常丰富且有良好文档记录的工具集,用于处理JSON-transofrmers、验证器等

import play.api.libs.json._

val json: JsValue = Json.parse("""{"a":1}""")
要在不播放的情况下使用此库,只需在build.sbt中使用字符串安装它

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"

注意:从技术上讲,解析JSON的核心Scala“本机”方式已经不再存在。您应该使用外部的、受支持的库,如Spray JSON或Play JSON

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

如果您选择将以下内容添加到build.sbt,您仍然可以将其添加到项目中:

libraryDependencies+=“org.scala-lang.modules”%%“scala解析器组合器”%%“1.0.4”

您可以在找到库的源代码


因为您特别询问了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))
parseFull
返回的是
Some(Map)
parseRaw
返回的是
Some(JSONObject)


parsed
是JSONObject

Scala中有许多JSON库。它们都提供了一个解析函数,从字符串中获取JSON值。您首先需要选择一个库(播放JSON、Argonaut等)。@cchantep Thx,但我希望尽可能避免使用外部库。这就是为什么我想知道Scala是否有一些内置的支持。我想我只需要使用一个库,那么.JSON就不推荐了,因为2.11
@scala.deprecated(“此对象将被删除。”,“2.11.0”)对象JSON扩展了scala.util.parsing.JSON.Parser{
@RamGhadiyaram看起来你是对的。你认为我应该删除答案吗?注意,它在社区支持的库中保留了一些,超过了最初的2.11.0版本,但是它在那里也被弃用了,尽管库的其余部分仍在维护中。不,抱歉,你不应该删除。请提及请注意,版本名称;使用较旧版本scala的用户仍然可以使用它。这就是我的意思,JSON不推荐使用,因为2.11
@scala.deprecated(“此对象将被删除。”,“2.11.0”)对象JSON扩展了scala.util.parsing.JSON.Parser{
当我导入spray.json时,它显示了一个错误。我认为应该为它提供库依赖关系。那么库依赖关系应该是什么呢???libraryDependencies+=“io.spray”%%“spray json”%%“1.3.5”是库依赖关系
import scala.util.parsing.json._

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