我正在使用Lift JSON for-comprehensions来解析一些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)
生成List(1, 2, 3)
。我期待它产品List(1)
。
在我的程序中,这导致二次计算,但我只需要线性。
是否可以使用for-comprehension来匹配顶级id
字段?
答案 0 :(得分:1)
我没有深入研究以确定默认理解是递归的,但是你可以通过简单地限定你的搜索根来解决这个问题:
scala> for ( JField( "id", JInt( id ) ) <- parent.children ) yield id
res4: List[BigInt] = List(1)
请注意使用 parent.children 。