gpt4 book ai didi

java - 比较两个 json 并从第一个 json java 返回唯一键

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:12 25 4
gpt4 key购买 nike

目前我有两个 json 正文:1. 全局json2.companyjson

全局json:

"dS": {
"a": 5,
"b": false,
"c": 5,
"d": false,
"e": 1,
"f": 5,
"g": 33.528,
"h": false
}

公司 json:

 "dS": {
"a": 90
},

预期输出:

 "dS": {
"a": 90,
"b": false,
"c": 5,
"d": false,
"e": 1,
"f": 5,
"g": 33.528,
"h": false
}

我尝试执行以下操作:

Map<String, Object> map1 = mapper.readValue(companyjson, Map.class);
Map<String, Object> map2 = mapper.readValue(globaljson, Map.class);
Map<String, Object> merged = new HashMap<String, Object>(map1);
merged.putAll(map2);

但这会返回

"dS": {
"a": 90
},

我目前正在使用 jackson 库,但找不到任何可以解决我的要求的方法。我不想对我的 key 进行硬编码,因为 key 名称将来可能会更改。

最佳答案

合并之前...

  • map1必须是:{dS={a=90}}
  • map2必须是:{dS={a=5, b=false, c=5, d=false, e=1, f=5, g=33.528, h=false}}

然后在这一行之后...

Map<String, Object> merged = new HashMap<String, Object>(map1);

....merged必须是:{dS={a=90}}

然后在这一行之后...

merged.putAll(map2);

... merged必须是{dS={a=5, b=false, c=5, d=false, e=1, f=5, g=33.528, h=false}}由于 putAll 的影响就是替换键dS的值在merged键的值 dSmap2 。换一种方式;您正在合并两个映射,它们都包含名为 dS 的键并希望合并对 dS内容敏感而合并实际上只是替换了 dS 的值与另一个的值 dS .

要获得所需的结果,您必须合并 dS 下存在的 map 。键,例如:

Map<String, Object> map1 = mapper.readValue(companyJson, Map.class);
Map<String, Object> map2 = mapper.readValue(globalJson, Map.class);

Map<String, Object> globalMap = (Map) map2.get("dS");
Map<String, Object> companyMap = (Map) map1.get("dS");
globalMap.putAll(companyMap);

上面的代码结果为 map2具有以下内容:

{dS={a=90, b=false, c=5, d=false, e=1, f=5, g=33.528, h=false}}

关于java - 比较两个 json 并从第一个 json java 返回唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46777671/

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