1

我有一组使用 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的根。如果有人也可以帮助我理解这一点,我将不胜感激。

谢谢你。

4

0 回答 0