【问题标题】:Parse JSON inside JSON attribute using JSONPath使用 JSONPath 解析 JSON 属性中的 JSON
【发布时间】:2022-01-03 15:37:56
【问题描述】:

我有一个 JSON 列表,其中每个元素的属性之一恰好是 JSON 本身。它来自一个糟糕的前期设计,但它就是这样。

我想查询元素中包含的 JSON 字符串中的不同属性。

这里是一个例子,只有一个项目。我亲手编写了代码,但相信我,从生成的方式来看,它在生产中是有效的 JSON

[{
  "extraData": "{\"foo\":\"bar\"}"
}]

我想查询类似$.*.extraData.foo 的内容,但显然这样的语法不起作用。 我正在使用 IntelliJ IDEA Jsonpath 评估器。

语法应该类似于parse($.*.extraData).*.foo

This article 建议我没有这样的运算符可用于解析 JSON 中的 JSON

必须为 JSONPath,仅用于数据分析目的。在 Java 中,我使用 Jackson 将 extraData 对象解析为 JsonNode,但我的目标是探索大型数据集,并可能获得一些我想用于枚举目的的不同值。

【问题讨论】:

    标签: jsonpath


    【解决方案1】:

    对于 JSON Path,嵌入的 JSON 只是一个字符串。您可以对单个操作做的最好的事情是在表达式选择器中使用 RegEx,但是让 RegEx 识别 JSON 确实很棘手,如果您的实现甚至支持 RegEx。

    我认为最好的选择是使用两条路径:

    1. 第一个路径获取嵌入的 JSON。 $.*.extraData
    2. 解析该值
    3. 第二部分获取您需要的数据。 $.foo

    这需要一些额外的代码,但我认为这是您唯一现实的选择。

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 2017-02-05
      • 2016-02-05
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多