【发布时间】:2018-03-28 09:48:50
【问题描述】:
目前我有两个 json 正文: 1.全局json 2.公司json
全局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
},
我目前正在使用杰克逊库,但找不到任何方法可以解决我的要求。我不想对我的密钥进行硬编码,因为将来密钥名称可能会更改。
【问题讨论】:
-
外部 JSON 对象的键是
dS,而不是像"a" ,etc. Thus, you're replacing the value ofdS` 这样的内部对象。你明白吗?应该很明显了。 -
看不出有什么问题。您可以尝试使用 convertvalue 而不是 readvalue 方法。我假设您在合并之前验证了 map1 和 map2。
标签: java json hashmap jackson compare