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



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

下面的 JSONPath 仅在"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"
                ]
            }
        ]
    }
}

有没有办法使用 JSONPath 检查 JSON 对象内的字符串数组中是否存在特定字符串,而无需知道它的索引?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新