在 JSON 数组中收集元素
Collecting Elements in a JSON Array
我和阿尔戈英雄有很大的摩擦。我需要收集 JSON 数组中的所有元素。例如,我在 JSON.
中有此数据
val data = """{"id": 1, "items": [{"name": "foo","price": 10},{"name": "bar","price": 20}]}"""
然后我需要将所有 name
值收集到列表中。所以我得到这个
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 (- _)
)
但我不确定如何获取值。请我在这里需要建议。
如果添加 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)
我和阿尔戈英雄有很大的摩擦。我需要收集 JSON 数组中的所有元素。例如,我在 JSON.
中有此数据val data = """{"id": 1, "items": [{"name": "foo","price": 10},{"name": "bar","price": 20}]}"""
然后我需要将所有 name
值收集到列表中。所以我得到这个
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 (- _)
)
但我不确定如何获取值。请我在这里需要建议。
如果添加 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)