【问题标题】:json4s error: value \\ is not a member of (String, org.json4s.JsonAST.JObject)json4s 错误:值 \\ 不是 (String, org.json4s.JsonAST.JObject) 的成员
【发布时间】:2016-01-22 01:32:40
【问题描述】:

首先,我对 Scala 很陌生,所以请原谅我最终犯的愚蠢错误。

Json4s Readme中有如下代码:

scala> import org.json4s.jackson.JsonMethods._
scala> import org.json4s.JsonDSL._


scala> val json =
  ("person" ->
  ("name" -> "Joe") ~
  ("age" -> 35) ~
    ("spouse" ->
    ("person" ->
     ("name" -> "Marilyn") ~
     ("age" -> 33)
    )
  )
)

scala> json \\ "spouse"
res0: org.json4s.JsonAST.JValue = JObject(List(
      (person,JObject(List((name,JString(Marilyn)), (age,JInt(33)))))))

运行此代码时出现以下错误:

error: value \\ is not a member of (String, org.json4s.JsonAST.JObject)
json \\ "spouse"
     ^

我的sbt 文件如下:

name := "Impressions"
version := "1.0"
scalaVersion := "2.10.6"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.4.1" % "provided",
  //"org.json4s"  %% "json4s-native" % "3.3.0"
  "org.json4s"  %% "json4s-jackson" % "3.3.0"
)

然后我在sbt console 下运行示例。有什么想法吗?

【问题讨论】:

    标签: scala json4s


    【解决方案1】:

    如果您像这样稍微修改json 声明:

    val json: JObject =
      ("person" ->
      ("name" -> "Joe") ~
      ("age" -> 35) ~
        ("spouse" ->
        ("person" ->
         ("name" -> "Marilyn") ~
         ("age" -> 33)
        )
      )
    )
    

    ...它会起作用的。

    我认为编译器假定您正在声明一个带有StringJObject 的元组,而您实际上想要声明一个完整的JObject

    【讨论】:

    • 有效!非常感谢!但我必须使用org.json4s.JsonAST.JObject 而不是JObject。这个丑陋的名字有捷径吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2018-03-14
    • 2017-08-22
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多