如何使用 JSONPath 在字符串数组中查找值?

How to find value in string array using JSONPath?

我正在尝试过滤 hasContent 属性 为真且 legalStatutes 字符串数组包含带有 'AIA' 的字符串的 formParagraph 对象列表。问题是 'AIA' 并不总是在数组中的零位置。

以下 JSON 路径仅在 'AIA' 是数组中的第一项时有效。

   $.businessResponse.formParagraphList[ ? ((@.hasContent == true) && (@.legalStatutes[0] == 'AIA'))] {
    "rbacUser": null,
    "businessResponse": {
        "formParagraphList": [{
                "id": 1261,
                "hasContent": true,
                "legalStatutes": [
                    "Pre_AIA",
                    "AIA"
                ]
            },
            {
                "id": 67,
                "hasContent": true,
                "legalStatutes": [
                    "AIA",
                    "Pre_AIA"
                ]
            },
            {
                "id": 68,
                "hasContent": true,
                "legalStatutes": [
                    "Pre_AIA"
                ]
            }
        ]
    }
}

有没有一种方法可以在 JSON 对象的字符串数组中检查特定字符串是否存在,而无需使用 JSONPath 来检查它的索引?

好的,找到了解决我的问题的方法。使用 .indexOf() 方法检查字符串是否存在于数组中。

$.businessResponse.formParagraphList[?((@.hasContent==true) && (@.legalStatutes.indexOf('AIA') > -1))]

更新: 上面的 JSONPath 在在线评估器中有效,但在 Newtonsoft for C# 中不起作用。这是我使用这个库所得到的。

$.businessResponse.formParagraphList[?(@.hasExaminerNote==true && @.legalStatutes[*]=='Pre_AIA')]