如何在仅获取对象的某些字段的同时解析字段内的Json数组

时间:2019-06-15 18:57:25

标签: json scala circe

我在使用circ进行更复杂的提取时遇到了一些麻烦。如果我有以下Json:

{
  "data": [
    {"a": "a-string", "b": "a-string", "c": "a-string"},
    {"a": "a-string", "b": "a-string", "c": "a-string"},
    {"a": "a-string", "b": "a-string", "c": "a-string"}
  ]
}

我如何使用circe获得这些对象的列表,但仅包含a和b字段?

1 个答案:

答案 0 :(得分:2)

尝试定义一个仅包含ab这样的字段的模型

case class Element(a: String, b: String)

例如,

import io.circe.generic.auto._
import io.circe.parser._

case class Element(a: String, b: String)
case class Data(data: List[Element])

val raw = """{"data": [{"a": "a-string", "b": "a-string", "c": "a-string"},{"a": "a-string", "b": "a-string", "c": "a-string"}, {"a": "a-string", "b": "a-string", "c": "a-string"}] }"""
decode[Data](raw).getOrElse(throw new RuntimeException)

输出

res0: Data = Data(List(Element(a-string,a-string), Element(a-string,a-string), Element(a-string,a-string)))