我正在尝试过滤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')]