使用Play framework解析Scala中的Json字符串
我开始尝试Scala和Play解析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
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解决了问题。谢谢