【发布时间】:2015-08-09 20:37:57
【问题描述】:
我正在使用 play-json 库来操作我的 json 文件。我已经关注了official document,一切正常,但他们没有告诉我们何时要更新数组中对象的值,所以我正在尝试我自己的示例。
即
[
{
"key1": [
{
"key12": [
{
"key121": "text1",
"key122": 121212,
"key123": "text2",
"key124": []
}
],
"key13": 0
}
],
"key2": "value2"
}
]
在上面的示例中,我试图更新“key123”的值,但一次又一次地收到此错误,只是无法找出我在哪里做错了:(
线程“main”中的异常 java.util.NoSuchElementException: JsError.get 在 play.api.libs.json.JsError.get(JsResult.scala:14) 在 play.api.libs.json.JsError.get(JsResult.scala:13) 在 Refactor.authPage(Refactor.scala:73) 在 Builder$.main(Builder.scala:36) 在 Builder.main(Builder.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
这是我的代码。任何形式的帮助将不胜感激。
val transform = (((__ (0) \ 'key1)(0) \ 'key12)(0) \ 'key123).json.update(__.read[JsString].map(x => JsString("updated")))
val jsValue = Json.parse("example.json").transform(transform).get
【问题讨论】:
-
Json.parse("example.json").transform返回一个 JsResult。您可以对JsSuccess和JsError进行模式匹配。在您的情况下,您会得到 JsError。将其记录在模式匹配中将为您提供有关错误的更多上下文 -
这是我的 JsError:
{"obj":[{"msg":"error.expected.jsobject","args":[]}]}
标签: json scala playframework play-json