如何用Circe解析un对象数组

时间:2018-04-03 09:30:44

标签: scala circe

我有一个json

{ "field" : [ { "value" : 1.0 }, { "value" : 2.0 } ] }

如何获得值为{1.0,2.0}的List[String]

2 个答案:

答案 0 :(得分:1)

就我个人而言,我会这样做:

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

case class ValueWrapper(value: Double)
case class Result(field: Seq[ValueWrapper])

decode[Result](jsonString).map(_.field.map(_.toString)).getOrElse(Seq.empty)

实际上,你可以在没有Decoder推导的情况下做到这一点。基本上它意味着你不使用最常用的Circe部分,而是依赖Circe optics。我想它会像(我没有测试过它!):

import io.circe.optics.JsonPath._
root.field.value.double.getAll(jsonString).map(_.toString)

答案 1 :(得分:0)

Circe光学是最简洁的方法。

import io.circe.optics.JsonPath._
import io.circe.parser._

val json = parse(jsonStr).right.get // TODO: handle parse errors

root.field.each.value.double.getAll(json) // == List(1.0, 2.0)