[英]How to use OR condition in JsonPath if one condition is not correct
我可以有以下 JSON:
{
"class": [
{
"extension": [
{
"url": "example.com",
"valueIdentifier": {
"value": "myValue"
}
}
]
}
]
}
或者
{
"class": [
{
"extension": [
{
"url": "example.com",
"valueString": "myValue"
}
]
}
]
}
我想根据 json 检索value
或valueString
值。在 XPath 中,我可以使用|
operator 和 engine 将取适当的值:
/*:class/*:extension[@url='example.com']/*:valueString/@value | /*:class/*:extension[@url='example.com']/*:valueIdentifier/*:value/@value
JsonPath 似乎不能那样工作。 我在 JsonPath 中尝试了很多不同的组合,但没有一个有效。 我使用Jayway引擎。 我试过了:
$.class[0].extension[?(@.url=="example.com")].valueString ||
$.class[0].extension[?(@.url=="example.com")].valueIdentifier.value
$.class[0].extension[?(@.url=="example.com")]['valueString', 'valueIdentifier', 'value']
$.class[0].extension[?(@.url=="example.com")].[?(@.value)].[*]
有人知道是否可以写出相同(或相似)的表达式吗?
找到了答案。
$.concat($.class[0].extension[?(@.url=="example.com")].[?(@.valueString || @..value)].valueIdentifier.value,$.class[0].extension[?(@.url=="example.com")].[?(@.valueString || @..value)].valueString)
解决方案适用于版本(至少) 2.7
的 Jayway 引擎。 我也试过2.4
版,但没有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.