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