Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Play framework解析Scala中的Json字符串_Json_Scala_Playframework 2.0 - Fatal编程技术网

使用Play framework解析Scala中的Json字符串

使用Play framework解析Scala中的Json字符串,json,scala,playframework-2.0,Json,Scala,Playframework 2.0,我开始尝试Scala和Play解析Json数据,并在上遵循教程。 现在,当我尝试运行下面给出的示例代码时: val json: JsValue = Json.parse("""{ "name" : "Watership Down", "location" : { "lat" : 51.235685, "long" : -1.309197 }, "residents" : [ { "name" : "Fiver", "age" : 4, "r

我开始尝试Scala和Play解析Json数据,并在上遵循教程。 现在,当我尝试运行下面给出的示例代码时:

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和JsUndefined

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

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

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

JsLookupResult
是2.4中新增的。您确定使用的是2.1吗?2.4对JSON库进行了重大更改。阅读2.4教程,而不是古老的2.1教程。不知道为什么我会有使用2.1的印象。无论如何,我必须将我的版本更新到2.3.9。但是,当我尝试运行示例代码时,仍然面临一些问题。我已经更新了我的问题。看起来我的代码在运行时仍然参考播放2.4。将其更新为2.3.9解决了问题。谢谢。谢谢,但是看起来我必须把我的游戏框架升级到2.3.9。我仍然面临一些问题。我已经更新了我的问题。这是一个简单的全栈web应用程序,使用Play 2.4.2作为端点后端,Reactivemongo用于reactive MongoDB驱动程序,Guice用于依赖注入,Spec2和Mockito用于单元测试和集成测试,Frisby用于端点测试,AngularJs、Bookstrap和Coffee脚本用于前端。我该怎么办?我不能使用Play 2.4.x。我需要使用2.3.x。看起来我的代码在运行时仍然参考播放2.4。将其更新为2.3.9解决了问题。谢谢