下面是我的json。一个文件中有多个这样的数组。我想使用名称xyz访问字段带宽。我正在使用JSONPath
"a": [
{
"name": "xyz",
"displayValue": "value",
},
{
"bandwidth": "123",
}
],
[
{
"name": "pqr",
"displayValue": "value",
},
{
"bandwidth": "789",
}
]
这可能来自为SO准备就绪的数据,但是您的JSON无效。它可能是:
{
"a": [
{
"name": "xyz",
"displayValue": "value"
},
{
"bandwidth": "123"
},
{
"name": "pqr",
"displayValue": "value"
},
{
"bandwidth": "789"
}
]
}
或
{
"a": [
{
"name": "xyz",
"displayValue": "value"
},
{
"bandwidth": "123"
}
],
"b": [
{
"name": "pqr",
"displayValue": "value"
},
{
"bandwidth": "789"
}
]
}
就JSONPath而言。使用上面的第一个有效JSON,您可以使用以下语法:
$.a.[?(@.name=='xyz')].displayValue
?
是过滤器表达式。当您要评估布尔表达式(例如名称等于“ xyz”)时使用]
@
选择器是当前正在处理的节点。
然后,它获取当前节点的“名称”键,并将其值与硬编码值“ xyz”进行比较。如果计算结果为true,它将在同一节点中选择displayValue
的值。