Java 检测并从JSON对象中删除冗余节点以保存核心结构
在我的项目中,我需要收集一些经过计算的统计数据。原始Java 检测并从JSON对象中删除冗余节点以保存核心结构,java,json,Java,Json,在我的项目中,我需要收集一些经过计算的统计数据。原始json对象字段,如果您愿意,可以使用提供的链接找到 项目需要保留的数据比实际情况少得多。例如,我对nextjson节点感兴趣: "id", "kind", "lighthouseResult.audits.metrics", "lighthouseResult.audits.time-to-first-byte" 或 首先,我尝试使用。我的第一个问题就在那里。我使用谷歌图书馆提供的pojo类来避免重复。我为节
json
对象字段,如果您愿意,可以使用提供的链接找到
项目需要保留的数据比实际情况少得多。例如,我对nextjson
节点感兴趣:
"id",
"kind",
"lighthouseResult.audits.metrics",
"lighthouseResult.audits.time-to-first-byte"
或
首先,我尝试使用。我的第一个问题就在那里。我使用谷歌图书馆提供的pojo
类来避免重复。我为节点指定了所需的对象描述,直到节点成为映射为止。结果,我无法描述应该为我的请求过滤哪些映射键。由不同的人发布,但尚未答复
因此,我的下一个尝试是使用任何json处理库删除所有与我的配置无关的冗余节点。现在我正在尝试使用:
"$.id",
"$.kind",
"$.lighthouseResult.audits.metrics",
"$.lighthouseResult.audits.time-to-first-byte"
但解决方案应该是灵活的,并且可以在java之外进行配置(在任何属性文件中)。因此,重要的是要有一个安全的机会,所有的匹配者在删除时间作出正确的决定
至于我,还有两种方法可以获得所需信息:
我希望有更好的决策来实现目标,并且需要有用的建议,如果您有一个优雅的解决方案,可能是代码示例。作为临时解决方案,我考虑使用:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
路径列表
不完全是路径列表。这种配置DocumentContext
的方式提供了匹配路径列表(选项。AS\u path\u list
),没有异常(选项。抑制异常
)
为了收集所需的路径,我尝试了以下逻辑:
WHILE FROM 1 to N
PARSING JSON WITH MATCHER DEPENDENT ON INDEX VALUE
COLLECTING TO LIST
END
REMOVE FROM LIST MATCHERS SPECIFIED MATCHERS IN CONFIGURATION
REMOVE FROM JsonPath.parse(json) ALL NODES BY LEFT MATCHERS
匹配路径示例:
Collection<? extends String> read = pathList .read("$.*");
Collection<? extends String> read = pathList .read("$.*.*");
...
Collection<? extends String> read = pathList .read("$.*...*");
附笔。
我并没有提供所有的代码,因为想法必须是关注的中心。在java
中读取代码看起来有点复杂(处理性能案例并使其以动态方式工作)。例如:
nestingLevel
或未配置路径,则必须跳过逻辑)
路径列表中删除其子项
JsonPath.parse(json)
中的所有内容作为临时解决方案,我考虑使用:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
路径列表
不完全是路径列表。这种配置DocumentContext
的方式提供了匹配路径列表(选项。AS\u path\u list
),没有异常(选项。抑制异常
)
为了收集所需的路径,我尝试了以下逻辑:
WHILE FROM 1 to N
PARSING JSON WITH MATCHER DEPENDENT ON INDEX VALUE
COLLECTING TO LIST
END
REMOVE FROM LIST MATCHERS SPECIFIED MATCHERS IN CONFIGURATION
REMOVE FROM JsonPath.parse(json) ALL NODES BY LEFT MATCHERS
匹配路径示例:
Collection<? extends String> read = pathList .read("$.*");
Collection<? extends String> read = pathList .read("$.*.*");
...
Collection<? extends String> read = pathList .read("$.*...*");
附笔。
我并没有提供所有的代码,因为想法必须是关注的中心。在java
中读取代码看起来有点复杂(处理性能案例并使其以动态方式工作)。例如:
nestingLevel
或未配置路径,则必须跳过逻辑)
路径列表中删除其子项
JsonPath.parse(json)
中的所有内容