所以我目前正在使用一些令牌过滤,并且有一种情况我需要使用 SelectTokens() 方法根据 C# 中的过滤条件过滤令牌,如果单个值与查询匹配,我想要所有对象和/或根元素,为简洁起见,这是我想要将过滤应用于的底层数组之一:
[
{
"unitPrice": 5
},
{
"unitPrice": 13
}
]
例如,如果单个值大于 10,我会想要该数组中的所有元素,否则没有返回值,所以如果我要使用这样的查询:$[?($[?(@.unitPrice >= 10)] empty false)]
在我的 SelectTokens() 调用中,我希望返回相同的列表,如果比较值高于 13,则返回一个空数组。
此示例在某些测试人员(例如https://jsonpath.herokuapp.com/ )中查询时工作得很好,但在大多数其他测试人员以及我自己的 C# 代码中似乎无效,我试图找到其他替代方案来获得这个相同的查询功能,每次我找到实现此功能的有效方法时,结果都无法在Newtonsoft.Json.Linq.SelectTokens()
我使用的实际方法中工作。
似乎每当我尝试$
在实际查询中使用运算符时,它只是拒绝在 newtonsoft 的 jsonpath 实现中工作,而且我似乎找不到试图实现与我相同的事情的人,所以我只是好奇如果有一种简单的方法可以与 newtonsoft 的实现一起使用。
这是我尝试做的最接近的匹配,虽然它是针对单个令牌而不是数组,但它也仅适用于特定测试人员JsonPath: Selecting root level field if satisfies a condition