Я использую for-comprehensions 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)
производит List(1, 2, 3)
. Я ожидал, что это будет продукт List(1)
.
В моей программе это приводит к квадратичным вычислениям, хотя мне нужны только линейные.
Можно ли использовать for-comprehension для соответствия только полям id
верхнего уровня?