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)) <- parent
} yield id
println(ids)

产生CCD_ 2。我原以为它会生产List(1)

在我的程序中,这导致了二次计算,尽管我只需要线性。

是否可以用于仅匹配顶级id字段的综合?

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

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

注意parent.children.

的使用

相关内容

  • 没有找到相关文章

最新更新