首页 文章

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

提问于
浏览
14

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

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

谢谢 .

4 回答

  • 6

    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))

  • 2

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

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

    您也可以使用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"
    
  • 20

    parseFullSome(Map)parseRaw 为单位返回 Some(JSONObject)

    import scala.util.parsing.json._
    
    val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)
    

    parsed 是JSONObject

相关问题