我和Argonaut有很大的麻烦。我需要收集JSON数组中的所有元素。例如,我将这些数据保存在JSON中。
val data = """{"id": 1, "items": [{"name": "foo","price": 10},{"name": "bar","price": 20}]}"""
然后,我需要将所有name
值收集到List中。所以我得到了
List("foo", "bar")
这意味着我需要遍历数组,因此我选择Argonaut库来执行此操作。但是很难知道API在Argonaut中是如何工作的。到目前为止,我有这个,
val data = """{"id": 1, "items": [{"name": "foo","price": 10},{"name": "bar","price": 20}]}""".parseOption
data flatMap (k =>
+k --\ "items" flatMap (_.downArray) map (- _)
)
但是我不确定如何获得价值。请在这里我需要建议。
答案 0 :(得分:3)
如果您添加argonaut-monocle,则可以轻松地执行以下操作:
import argonaut._
import Argonaut._
import argonaut.JsonPath._
scala> val json: Option[Json] = """{"id": 1, "items": [{"name": "foo","price": 10},{"name": "bar","price": 20}]}""".parseOption
json: Option[argonaut.Json] = Some({"id":1,"items":[{"name":"foo","price":10},{"name":"bar","price":20}]})
scala> root.items.each.name.string.getAll(json.get)
res1: List[String] = List(foo, bar)