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

时间:2017-01-18 20:07:56

标签: c# json.net jsonpath

我正在尝试过滤一个formParagraph对象列表,其中hasContent属性为true,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"
                ]
            }
        ]
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

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

<强>更新 上面的JSONPath在在线评估器中是有效的,但它在Newtonsoft中不适用于C#。这是我使用这个库的原因。

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