如何解决Java如果“ parent”:“ somevalue”从扁平化的json中删除“ parent”:“ somevalue”,并且在同一json中也存在“ parent.new”:“ somevalue”
我有这样的json:
{
"lastModifiedBy" :"value","lastModifiedBy.$oid": "1234567189","displayedBy" : 0,"displayedBy.one" : "Abhi","displayedBy.one.new" : "Sammy","displayedBy.two":"random_value3","a.b":null,"b.c":null,"d.e.f":null
}
我只想保留最长的键,而不是以前的状态父键,而又不影响其他键 我需要的输出:
{
"lastModifiedBy.$oid": "1234567189","d.e.f":null
}
在Jackson或任何其他Java包中有没有办法做到这一点?
解决方法
如果能够将其转换为ArrayList,请删除不需要的所有键。例如,使用foreach。
如果您能够将其转换为在“:”和“”处拆分的字符串,请删除“ s创建一个ArrayList并使用索引0,2,4 ...作为键和1,3填充它, 5 ...作为价值,做上述事情。
,尝试一下。
Map<String,String> map = new HashMap<>();
map.put("lastModifiedBy","value");
map.put("lastModifiedBy.$oid","1234567189");
map.put("displayedBy","0");
map.put("displayedBy.one","Abhi");
map.put("displayedBy.one.new","Sammy");
map.put("displayedBy.two","random_value3");
map.put("a.b",null);
map.put("b.c",null);
map.put("d.e.f",null);
List<String> removes = new ArrayList<>();
for (String parent : map.keySet())
for (String child : map.keySet())
if (parent != child && child.startsWith(parent)) {
removes.add(parent);
break;
}
for (String key : removes)
map.remove(key);
System.out.println(map);
输出:
{a.b=null,d.e.f=null,displayedBy.one.new=Sammy,b.c=null,displayedBy.two=random_value3,lastModifiedBy.$oid=1234567189}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。