我需要使用JSONPATH从包含嵌套对象的JSON数组(下面的JSON示例)中获取多个值。
{
"store": {
"name": "ABC Co",
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95,
"edition": {
"year": 1990,
"published_by": "MacMillan"
}
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99,
"edition": {
"year": 1980,
"published_by": "MacMillan"
}
}
]
}
}
当我尝试的时候,这在父对象级别上工作得很好。
x一个一个一个一个x一个一个二个x
现在我也想获取子对象值(edition.year),如下所示:
["Sayings of the Century", "Nigel Rees", 1990]
但下面的表达式不起作用:
store.book[0].[title,author,edition.year]
有人能帮忙吗?谢谢。
3条答案
按热度按时间q9rjltbz1#
对于JSONPath-Plus,您可以使用以下查询
测试地点:https://jsonpath.com/
edqdpe6u2#
这里使用的特性称为union。虽然没有绑定标准来说明如何在JsonPath库中实现union,但大多数只允许两个属性的两个union。C. Burgmer编译了不同JsonPath implementations and their behavior的概述,甚至没有列出用于联合两个以上(平面)属性的特性。因此,这是特定于实现的,大多数不支持它。
我发现的下一个最好的方法是使用Goessner的JsonPath或JsonPath-Plus(都是JavaScript)在同一级别上联合三个属性:
结果是
您可以在线试用here或here (Goessner tab)。
bvuwiixz3#