如何在Java中合并和转换两种不同类型的地图?

时间:2017-10-29 16:54:33

标签: java json jackson

我正面临这个问题...

我有这个

Map<String, String> map1 = new HashMap<String, Integer>();
Map<String, Integer> map2 = new HashMap<String, Integer>();

转换为json(稍后发送请求)将需要两者。

问题是我无法以字符串形式发送所有内容,因为该应用返回错误请求状态

所以,我需要合法地合并这两张地图,将它们转换为JSON。

OR

我不知道是否可以将它们分别转换为 JSON 格式,然后添加它们?

有什么想法吗?

我使用jackson转换为json。

由于

2 个答案:

答案 0 :(得分:1)

好吧,我找到了一个相对简单的解决方案,希望可以帮助其他人。

我合并了地图然后转换了它们。

Map<String, String> map1 = new HashMap<String, String>();
Map<String, Integer> map2 = new HashMap<String, Integer>();
Map<String, Object> mergedRequestParam = new HashMap<>();
mergedRequestParam.putAll(map1);
mergedRequestParam.putAll(map2);
ObjectMapper objectMapper = new ObjectMapper(); 
String mapToJson = objectMapper.writeValueAsString(mergedRequestParam);

答案 1 :(得分:0)

如果您使用Java 8,这是一种方式

取决于您希望成为哪个列表:

map2.forEach( (key, value) -> { map1.put(key, value.toString()); });

将导致map1还包含转换为map2的{​​{1}}个值

OR

String

将导致map1.forEach( (key, value) -> { map2.put(key, new Integer(value)); }); 还包含转换为map2的{​​{1}}个值

如果您希望值保持不变:

map1

只需Integer即可轻松完成最后一个。

但是:如果您想进行一些检查,例如密钥冲突或其他检查/值操作,这些Map<String, Object> map3 = new HashMap<>(); map1.forEach( (key, value) -> { map3.put(key, value)); }); map2.forEach( (key, value) -> { map3.put(key, value)); }); 解决方案可以提供简单的方法。干净的方式来做,如:

putAll()