我有一个 JSON 列表,其中每个元素的属性之一恰好是 JSON 本身。它来自于糟糕的前期设计,但事实就是如此。
我想查询元素中包含的 JSON 字符串内的不同属性。
这是一个例子,只有一项。我手写了代码,但相信我,通过生成它的方式,它在生产中是有效的 JSON
[{
"extraData": "{\"foo\":\"bar\"}"
}]
我想查询类似的东西$.*.extraData.foo
,但显然这样的语法不起作用。
我正在使用 IntelliJ IDEA Jsonpath 评估器。
语法应该是这样的parse($.*.extraData).*.foo
本文 https://docs.oracle.com/cd/E60058_01/PDF/8.0.8.x/8.0.8.0.0/PMF_HTML/JsonPath_Expressions.htm建议我没有这样的运算符可用于解析 JSON 中的 JSON
It has仅用于数据分析目的的 JSONPath。在Java中,我使用Jackson来解析extraData
对象作为JsonNode
,但我的目标是探索大型数据集,也许获得一些我想要用于枚举目的的不同值。
对于 JSON Path 来说,嵌入的 JSON 只是一个字符串。对于单个操作,您可以做的最好的事情是在表达式选择器中使用 RegEx,但是让 RegEx 识别 JSON 确实很棘手,而且前提是您的实现支持 RegEx。
我认为最好的选择是使用两条路径:
- 第一个路径获取嵌入的 JSON。
$.*.extraData
- 解析该值
- 第二部分获取您需要的数据。
$.foo
这需要一些额外的代码,但我认为这是你唯一现实的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)