Scala 仅使用json4s获取直接子对象中的字段

Scala 仅使用json4s获取直接子对象中的字段,scala,json4s,Scala,Json4s,我有一个类似这样的Json,我使用json4s parseJson方法解析了它: { "id":123, "item1":[ { "id":"234", "item2":[ { "id":"456" } ] } ] }

我有一个类似这样的Json,我使用json4s parseJson方法解析了它:

       { 
        "id":123, 
        "item1":[
          {
           "id":"234", 
           "item2":[
             {
              "id":"456"
             }
            ]
           }
          ]
        }
我只想获取item1的id,而不是item2。如何使用json4s实现这一点


如果我使用json \“id”,我也会得到item2的id。

你可以
杰克逊的
\
操作符,如下所示:

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)))

您可以
jackson的
\
操作符,如下所示:

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。这种方法的问题是嵌套对象的名称可以是任何东西,而不仅仅是item1。