使用 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.
我认为最好的选择是使用两条路径:
- 第一条路径获得嵌入JSON。
$.*.extraData
- 解析该值
- 第二部分获取您需要的数据。
$.foo
这需要一些额外的代码,但我认为这是您唯一现实的选择。
我有一个 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.
我认为最好的选择是使用两条路径:
- 第一条路径获得嵌入JSON。
$.*.extraData
- 解析该值
- 第二部分获取您需要的数据。
$.foo
这需要一些额外的代码,但我认为这是您唯一现实的选择。