【发布时间】:2014-09-01 12:06:57
【问题描述】:
欢迎,
我真的很想避免这种情况,但我现在放弃了。我正在尝试遍历 json 数组并提取一些元素并将它们排序。我尝试了很多选项,从播放文档中尝试了所有选项,多次尝试,但我仍然遇到相同的错误:当我的方法尝试撤回元素时出现空指针异常。所以我的json例子是:
[
{
"var1": "xx",
"var2": "xxx",
"var3": 111
},
{
"var1": "yy",
"var2": "yyy",
"var3": 222
},
{
"var1": "zz",
"var2": "zzz",
"var3": 333
}
]
我定义了很多Reads的配置,最后一个是这样的但是不想编译;/
case class Vars1(vars: Seq[String])
val var1Reads: Reads[String] = (__ \ "var1").read[String]
implicit val vars1Reads: Reads[Vars1] = ((__).read[Seq[String]])(Vars1.apply _)
我想创建序列或列表,这并不重要,仅来自该数组的每个元素的 var1。它可以是纯序列,也可以是带有序列或其他的案例类。只是如何遍历 json 数组?我尝试了许多配置,读取 var1 是没有问题的,但是当我想从数组的每个元素中读取所有 vars 1 时,我就会遇到空指针异常。请,任何人都可以指出我一个好的方向,给我一个提示我做错了什么?请不要责怪我是编程新手,我开始学习scala和play框架。
感谢您的帮助。
更新:
我也试过这个:
implicit val vars1Reads = (__).read(Reads.list((__).read[String])).map( var => Vars(var))
但我仍然有同样的错误:
[NoSuchElementException: JsError.get]
【问题讨论】:
-
声明你的阅读是懒惰的,例如,
implicit lazy val vars1Reads。这是一个令人讨厌且完全令人困惑的 NPE 来源。
标签: json scala playframework-2.0