如何检查 JsonPath 中的多个键
How to check multiple keys in JsonPath
我正在尝试使用 JsonPath 在 JSON 数组中查找对象。
这是我的 JSON:
[
{
"bpm": "766",
"time": "20:14:57",
"confidence": "0"
},
{
"bpm": "766",
"time": "20:14:57",
"confidence": "0"
},
{
"bpm": "767",
"time": "20:14:33",
"confidence": "0"
}
]
我将 SelectToken
与以下 JsonPath 查询一起使用,以尝试使用两个键 bpm
和 time
查找 JSON 对象。 bpm
和 time
之间应该有一个 and
运算符。
这是我的查询:
$.[?(@.bpm=='767',@.time=='20:14:33')]
但我收到一条错误消息,提示 '767'
后有一个意外字符 ,
。我做错了什么?
在 Newtonsoft 的 JsonPath 实现中,and
运算符是双符号 &&
,而不是逗号 ,
。如下所示更改您的表达式,它应该可以正常工作:
var array = JArray.Parse(json);
var obj = array.SelectToken("$.[?(@.bpm=='767' && @.time=='20:14:33')]");
Fiddle: https://dotnetfiddle.net/gpU56p
我正在尝试使用 JsonPath 在 JSON 数组中查找对象。 这是我的 JSON:
[
{
"bpm": "766",
"time": "20:14:57",
"confidence": "0"
},
{
"bpm": "766",
"time": "20:14:57",
"confidence": "0"
},
{
"bpm": "767",
"time": "20:14:33",
"confidence": "0"
}
]
我将 SelectToken
与以下 JsonPath 查询一起使用,以尝试使用两个键 bpm
和 time
查找 JSON 对象。 bpm
和 time
之间应该有一个 and
运算符。
这是我的查询:
$.[?(@.bpm=='767',@.time=='20:14:33')]
但我收到一条错误消息,提示 '767'
后有一个意外字符 ,
。我做错了什么?
在 Newtonsoft 的 JsonPath 实现中,and
运算符是双符号 &&
,而不是逗号 ,
。如下所示更改您的表达式,它应该可以正常工作:
var array = JArray.Parse(json);
var obj = array.SelectToken("$.[?(@.bpm=='767' && @.time=='20:14:33')]");
Fiddle: https://dotnetfiddle.net/gpU56p