【问题标题】:JSONPath union to extract from an array or a single objectJSONPath union 从数组或单个对象中提取
【发布时间】: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


    【解决方案1】:

    我尝试了以下似乎适用于两种情况的表达式:

    $.[key]
    

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 2022-01-23
      • 2016-11-21
      • 1970-01-01
      • 2016-05-25
      • 2022-11-20
      • 2020-03-31
      • 1970-01-01
      • 2018-06-30
      相关资源
      最近更新 更多