objectpath json 查询以获取 python 中的数组值

objectpath json query to get array values in python

我有一些 JSON 如下所示:

{
"books": [
    {
        "name": "Matthew"
    },
    {
        "name": "Mark",
        "sections": [
            {
                "reference": "1:1-1:8",
                "tags": [
                    "a",
                    "b"
                ],
                "summary": "blah",
                "notes": ""
            },
            {
                "reference": "1:9-1:15",
                "tags": [
                    "b",
                    "c",
                    "d"
                ],
                "summary": "",
                "notes": ""
            }
        ]
    }
]

}

我想使用 objectpath 获取所有部分的列表。

我试过:

sections = Tree(db).execute('$.books[@.name is "Mark"].sections')
for section in sections:
    print(section)
    print("----\n")

但 returned 是一个单独的部分,它是一个数组。也就是说,部分只有一个结果,而我期望(或至少想要)只有 'sections' 的数组。 这将使我在 for 循环中避免 for 循环。

是否有一些特殊的语法可以使它return如我所愿?

我也试过:

'$.books[@.name is "Mark"].sections.*'
'$.books[@.name is "Mark"].sections[*]'

运气不好。

sections 是生成器对象。要从中获取第一项,您可以使用 next() 函数:

sections = Tree(db).execute('$.books[@.name is "Mark"].sections')
print(sections) # will show that it's a generator
for section in next(sections):
    print(section)
    print("----\n")

第一项是包含各个部分的列表。现在您可以使用 for 循环遍历每个部分。