我真的很想避免這個,但是我現在放棄了。我試圖遍歷json數組並提取一些元素並將它們按順序排列。我嘗試了很多選擇,嘗試了所有從遊戲文檔,許多嘗試,但仍然有同樣的錯誤:當我的方法試圖提取元素時出現空指針異常。所以我的JSON的例子是:
[
{
"var1": "xx",
"var2": "xxx",
"var3": 111
},
{
"var1": "yy",
"var2": "yyy",
"var3": 222
},
{
"var1": "zz",
"var2": "zzz",
"var3": 333
}
]
我定義讀取的許多配置,最後一個是這樣的,但不想要,甚至編譯/
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是沒有問題的,但是當我想從數組的每個元素讀取所有變量1時,我有空指針異常。請任何人都可以指出我的方向,給我一個暗示我做錯了什麼?請不要怪我在編程方面是新手,我開始學習Scala和玩框架。
謝謝你的幫助。
更新:
我已經試過這一個了:
implicit val vars1Reads = (__).read(Reads.list((__).read[String])).map(var => Vars(var))
但我仍然有同樣的錯誤:
[NoSuchElementException: JsError.get]
聲明你的讀取是懶惰的,例如'隱式lazy val vars1Reads'。這是一個惱人的,完全混淆NPE的來源。 – Ryan 2014-09-01 20:40:30