我有一组使用 NewtonSoft.Json 13.0.1 反序列化的对象。我的项目使用的是 .Net 5.0,语言是 C#。我想使用 JsonPath (Json Path) 语法来确定一个对象是否匹配给定的标准,特别是 parent.child.property1 是否匹配字符串“appname”。似乎我可以使用过滤器表达式的唯一方法是如果我有一个数组。例如,在下文中,我一直无法想出一个有效的 JsonPath 表达式。一个示例Json如下:
{
"parent": {
"child": {
"property1": "appname",
"property2": "57fc697c44",
"property3": "yes"
}
}}
作为一种解决方法,我所做的是将先前的 Json 包装在一个数组中,然后使用过滤器表达式,因此,使用以下 Json:
{
"item": [
{
"parent": {
"child": {
"property1": "appname",
"property2": "57fc697c44",
"property3": "yes"
}
}
}
]}
和这个 JsonPath 表达式:
$..[?(@.parent.child.property1=='appname')]
我得到一个匹配。
顺便说一句,我最初尝试过(注意单点)
$.[?(@.parent.child.property1=='appname')]
这没有用。我不明白为什么,因为我的理解是“$”。指的是Json的根。如果有人也可以帮助我理解这一点,我将不胜感激。
谢谢你。