Я играю с библиотекой play-json для управления файлами json. Я следил за этим официальным документом, и все работает нормально, но они не сказали случай, когда мы хотим обновить значение объекта внутри массива, поэтому я пробую это на своем собственном примере.
i.e.
[
{
"key1": [
{
"key12": [
{
"key121": "text1",
"key122": 121212,
"key123": "text2",
"key124": []
}
],
"key13": 0
}
],
"key2": "value2"
}
]
В приведенном выше примере я пытаюсь обновить значение «key123», но снова и снова получаю эту ошибку, просто не могу понять, где я делаю неправильно :(
Исключение в потоке «основной» 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(собственный метод) в 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. Регистрация его внутри сопоставления с образцом даст вам больше контекста ошибки. - person Richeek   schedule 10.08.2015{"obj":[{"msg":"error.expected.jsobject","args":[]}]}
- person Vinay   schedule 10.08.2015