使用 JSONPath 在 JSON 属性中解析 JSON

Parse JSON inside JSON attribute using JSONPath

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

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

举个例子,只有一项。我手写了代码,但请相信我,根据生成的方式,它在生产中是有效的 JSON

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

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

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

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

中的 JSON

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

到JSON路径,嵌入的JSON只是一个字符串。您可以通过单个操作做的最好的事情是在表达式选择器中使用 RegEx,但是让 RegEx 识别 JSON 真的很棘手,而且如果您的实现甚至支持 RegEx.

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

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

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