gpt4 book ai didi

java - 从 JsonNode 中过滤掉字段

转载 作者:行者123 更新时间:2023-11-30 06:52:07 42 4
gpt4 key购买 nike

我有一个Jackson子类型 ObjectNodeJsonNode:

ObjectNode node = parent.path('somepath');

node 有许多子字段,例如您在这个 json 对象中看到的:

{
"somepath": {
"a": 1,
"b": 2,
"c": 3,
"d": 4
}
}

因此,上面的对象 node 将有四个子对象(所有 JsonNode/ObjectNode 都有自己的权利): abcd

给定对象node,我想过滤一些子字段。例如,假设我想过滤掉除某些字段名称列表之外的所有内容,例如 ["b", "c"]。当我重新序列化 node 对象时,它看起来像这样:

{
"somepath": {
"b": 2,
"c": 3
}
}

我可以想出很多方法来循环遍历字段名称列表和保留列表,并重建对象,但这一切似乎都需要大量工作并且非常不清楚。我想使用的是 Stream.filter() 类型的函数:

List<String> keepList = Lists.newArrayList("b", "c");
node.stream().filter( field -> keepList.contains(field.name()));

显然上面的代码不起作用,因为我无法“流式传输”ObjectNode。有没有一种方法可以让它以类似的方式工作,或者我是否要走很长的路?

最佳答案

ObjectNode 中有一个方法可以完全满足您的要求:retain 。您可以这样使用它:

ObjectNode node = parent.path('somepath');

node = node.retain(keepList);

关于java - 从 JsonNode 中过滤掉字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545320/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com