私はLiftJSONの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)
。
私のプログラムでは、これは2次計算になりますが、必要なのは線形だけです。
for-comprehensionsを使用してトップレベルのid
フィールドのみに一致させることは可能ですか?