Scala 用于理解的Lift-JSON中的非递归提取

Scala 用于理解的Lift-JSON中的非递归提取,scala,lift,for-comprehension,lift-json,Scala,Lift,For Comprehension,Lift Json,我使用Lift-JSON进行理解来解析一些JSON。JSON是递归的,因此每个级别都存在字段id。以下是一个例子: val json = """ { "id": 1 "children": [ { "id": 2 }, { "id": 3 } ] } """ 下面的代码 var ids = for { JObject(parent) <- parse(json) JField("id", JInt(id)) &l

我使用Lift-JSON进行理解来解析一些JSON。JSON是递归的,因此每个级别都存在字段
id
。以下是一个例子:

val json = """
{
  "id": 1
  "children": [
    {
      "id": 2
    },
    {
      "id": 3
    }
  ]
}
"""
下面的代码

var ids = for {
  JObject(parent) <- parse(json)
  JField("id", JInt(id)) <- parent
} yield id

println(ids)
var id=for{

JObject(parent)我还没有深入研究为什么默认理解是递归的,但是您可以通过简单地限定搜索根来解决这个问题:

scala>  for ( JField( "id", JInt( id ) ) <- parent.children ) yield id
res4: List[BigInt] = List(1)

scala>for(JField(“id”,JInt(id))我还没有深入研究为什么默认理解是递归的,但是您可以通过简单地限定搜索根来解决这个问题:

scala>  for ( JField( "id", JInt( id ) ) <- parent.children ) yield id
res4: List[BigInt] = List(1)
scala>for(JField(“id”,JInt(id))