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 循环遍历每个部分。
我有一些 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 循环遍历每个部分。