我正在尝试过滤一个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的索引?
答案 0 :(得分:0)
好的,找到了我的问题的解决方案。使用.indexOf()
方法检查数组中是否存在字符串。
$.businessResponse.formParagraphList[?((@.hasContent==true) && (@.legalStatutes.indexOf('AIA') > -1))]
<强>更新强> 上面的JSONPath在在线评估器中是有效的,但它在Newtonsoft中不适用于C#。这是我使用这个库的原因。
$.businessResponse.formParagraphList[?(@.hasExaminerNote==true && @.legalStatutes[*]=='Pre_AIA')]