【问题标题】:How to recursively parse a single Json field that is defined multiple times, in Play Json如何在Play Json中递归解析多次定义的单个Json字段
【发布时间】:2017-10-03 19:41:06
【问题描述】:

以下面的 JSON 字符串为例:

val document = """{
    "id": "12345",
    "createdTime": "13332517",
    "data": {
        "status": "active",
        "createdTime": "13345178"
    }"""

字段createdTime 在文档中定义了两次。 要返回顶层的createdTime,方法是:

val createdTime = Json.parse(document \ "createdTime")

取下面的 JSON 字符串;它与第一个示例相同,但现在是一个数组:

val document1 = """[{
    "id": "12345",
    "createdTime": "13332517",
    "data": {
        "status": "active",
        "createdTime": "13345178"
    }
}, {
    "id": "67890",
    "createdTime": "13332565",
    "data": {
        "status": "active",
        "createdTime": "13345173"
    }
}]"""

递归返回“createdTime”定义为:

val createdTime1 = Json.parse(document1) \\ "createdTime"

不过,这也会返回嵌套的 createdTime 字段。有没有办法递归只返回顶层createdTime

【问题讨论】:

    标签: json scala playframework play-json


    【解决方案1】:

    当您解析document1 并将其转换为JsArray 时,您应该有一个数组。然后您可以使用map 迭代该值以获得顶层createdTime。

    val createdTimes = Json.parse(document1).as[JsArray].value.map(_ \ "createdTime")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2019-08-23
      • 2018-09-30
      • 2018-11-07
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多