这是我要处理的 JSON 列表:
scala> jsonStructure \ "response" \ "docs"
res4: play.api.libs.json.JsValue = [{"title":"the very first document"},{"title":"on brick walls"}]
我尝试将其转换为一个列表,但我得到了一些具有不同语义的东西,一个列表,其唯一元素是该列表:
scala> jsonStructure \ "response" \\ "docs"
res3: Seq[play.api.libs.json.JsValue] = List([{"title":"the very first document"},{"title":"on brick walls"}])
scala> res3.size
res4: Int = 1
我尝试了这个kludge,它可以解决问题:
scala> (jsonStructure \ "response" \ "docs").as[Seq[play.api.libs.json.JsValue]]
res9: Seq[play.api.libs.json.JsValue] = List({"title":"the very first document"}, {"title":"on brick walls"})
scala> res9 size
res10: Int = 2
为什么没有\\
工作?将 JsValue 理解为 JsArray 的惯用方法是什么?在保持“导航使用和\永不失败”的理念的同时?我想解析更深层次的结构,比如 obj 中的 obj 列表,它是一个列表元素;我想要一种对于深度嵌套结构不会变得笨拙的方法。
如果您发现它复杂、脆弱等,请随时纠正我的方法。