【问题标题】:Filter an object array to modify json with circe过滤对象数组以使用 circe 修改 json
【发布时间】:2017-08-30 18:14:17
【问题描述】:

我正在评估 Circe,但不知道如何使用数组过滤器来转换 JSON。我在其网站和 API 文档上阅读了该指南,仍然没有任何线索。非常感谢您的帮助。

样本数据:

{
 "Department" : "HR",
 "Employees" :[{ "name": "abc", "age": 25 }, {"name":"def", "age" : 30 }]
}

任务:

如何使用员工过滤器将 JSON 转换为另一个 JSON,例如所有年龄超过 50 岁的员工?

出于某种原因,我无法在生成 JSON 之前从数据源中过滤,以防万一。

谢谢

【问题讨论】:

    标签: circe


    【解决方案1】:

    一种可能的方法是通过

    val data = """{"Department" : "HR","Employees" :[{ "name": "abc", "age": 25 }, {"name":"def", "age":30}]}"""
    
    def ageFilter(j:Json): Json = j.withArray { x =>
      Json.fromValues(x.filter(_.hcursor.downField("age").as[Int].map(_ > 26).getOrElse(false)))
    }
    val y: Either[ParsingFailure, Json] = parse(data).map( _.hcursor.downField("Employees").withFocus(ageFilter).top.get)
    
    println(s"$y")
    

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2019-10-07
      相关资源
      最近更新 更多