json - 使用 Play 框架在 Scala 中解析 Json 字符串

标签 json scala playframework-2.0

我开始尝试 Scala 和 Play 来解析 Json 数据,并按照 https://www.playframework.com/documentation/2.3.9/ScalaJson 上的教程进行操作。 。 现在,当我尝试运行那里给出的示例代码时:

val json: JsValue = Json.parse("""{
  "name" : "Watership Down",
  "location" : {
    "lat" : 51.235685,
    "long" : -1.309197
  },
  "residents" : [ {
    "name" : "Fiver",
    "age" : 4,
    "role" : null
  }, {
    "name" : "Bigwig",
    "age" : 6,
    "role" : "Owsla"
  } ]
}
""")

val lat = json \ "location" \ "lat"

我收到以下错误:

java.lang.NoSuchMethodError: play.api.libs.json.JsValue.$bslash(Ljava/lang/String;)Lplay/api/libs/json/JsValue;

我做错了什么?我使用的是 Scala 2.10 和 Play 2.3.9。

谢谢。

最佳答案

在 Play 2.4.x 中,JsLookupResult 表示特定 Json 路径处的值,可以是实际的 Json 节点,也可以是未定义的。 JsLookupResult 有两个子类:分别是 JsDefined 和 JsUndefine。

您可以按如下方式修改代码:

val name: JsLookupResult = json \ "user" \ "name"

name match {
  case JsDefined(v) => println(s"name = ${v.toString}")
  case undefined: JsUndefined => println(undefined.validationError)
}

关于json - 使用 Play 框架在 Scala 中解析 Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690886/

相关文章:

scala - 将依赖对象传递给 Scala 中的父构造函数

c# - 将 List<string> 从 Json 反序列化为 List<object>

java - "org.json.JSONArray implements Serializable": What's the best option to achieve this?

javascript - 映射状态数组不返回组件(ReactJS)

playframework-2.0 - PlayFramework Logback 打印调用者类名

playframework - 将类添加到 Play 2 自定义 FieldConstructor 中的输入

java - Play Framework 不是热重载

php - 无法在 Javascript 中解析 PHP 生成的 JSON

scala - (为什么)我们需要在 RDD 上调用缓存或持久化

scala - 未找到 Kind 编译器插件 λ