【发布时间】:2022-08-19 00:53:18
【问题描述】:
我们的第三方 API 会不一致地返回数据,在一种情况下,它会提供一个 JSON 对象数组,例如(如果 \"info\" 键有多个元素):
{\"info\": [{\"key\": \"data1\"}, {\"key\": \"data2\"}]}
如果 \"info\" 只有一个元素,它们只会给你一个 JSON 对象,而不是数组:
{\"info\": {\"key\": \"data1\"}}
我们需要构造一个 JSONPath 来提取 \"key\" 元素的列表,所以要涵盖第一种情况,它将是:
$.info[*].key
对于第二种情况,它是
$.info.key
我尝试使用 union 表达式在一个表达式中涵盖这两种情况,但它在在线 JSONPath 演示和我们的 Java 实现中都不起作用。它将返回一个空列表:
$.[info[*].key,info.key]
我可能误解了联合表达式 [,] 的语法,或者它只能在没有嵌套通配符表达式时应用。 想知道在一个表达式中提取两种场景的键列表的解决方案是什么。
标签: jsonpath