【问题标题】:Get Field in Immediate Child Objects Only Using json4s仅使用 json4s 获取直接子对象中的字段
【发布时间】:2026-01-28 12:35:02
【问题描述】:

我有一个看起来像这样的 Json,我使用 json4s parseJson 方法解析了它:

       { 
        "id":123, 
        "item1":[
          {
           "id":"234", 
           "item2":[
             {
              "id":"456"
             }
            ]
           }
          ]
        }

我只想获取 item1 的 id,而不是 item2。如何使用 json4s 做到这一点?

如果我使用 json \"id" 我也会得到 item2 的 id。

【问题讨论】:

    标签: scala json4s


    【解决方案1】:

    你可以jackson's\操作符如下:

    import org.json4s._
    import org.json4s.jackson.JsonMethods._
    
    var json = parse("""{"id":123,"item1":[{"id":"234","item2":[{"id":"456"}]}]}""").asInstanceOf[JObject]
    
    json \\ "item1" \\ "id"
    //Result: JObject(List((id,JString(234)), (id,JString(456))))
    
    json \ "item1" \ "id"
    //Result: JArray(List(JString(234)))
    

    【讨论】:

    • 这种方法的问题是嵌套对象的名称可以是任何东西,而不仅仅是 item1。