嵌套对象上的GPath

时间:2017-08-07 17:59:05

标签: java json groovy gpath

我不确定我在这里做错了什么,而且我有一段时间才能让它正常工作。使用这个JSON:

{
    "books": [
        {
            "category": "reference",
            "author": {
                "name": "Nigel Rees",
                "age": 45
            },
            "title": "Sayings of the Century",
            "price": 8.95,
            "tax": 7.00
        },
        {
            "category": "reference",
            "author": {
                "name": "Evelyn Waugh",
                "age": 30
            },
            "title": "A cheap book",
            "price": 6.00,
            "tax": 3.00
        }
    ]
}

例如,我无法提取作者年龄为45岁的书籍。我尝试了以下内容(使用books文档根目录设置)

findAll {it.author.age == 45}
findAll {it.author}.findAll {it.age == 45}
findAll {it.author}*.each {it.age == 45 }

我仍然收回所有有年龄项的记录。它可以是任意对象,也可能没有author记录等。我希望返回根book对象。

我觉得我有一些非常明显的东西,但是文档似乎只涵盖了一个级别的键值。也许它不支持它?

谢谢!

1 个答案:

答案 0 :(得分:1)

在这里

books.findAll{it.author.age==45}

它无法按您的方式工作(findAll {it.author.age == 45}),因为您从根开始工作,并且'it'变量返回'books'对象,其中没有字段'author'。