我正面临这个问题...
我有这个
Map<String, String> map1 = new HashMap<String, Integer>();
Map<String, Integer> map2 = new HashMap<String, Integer>();
转换为json(稍后发送请求)将需要两者。
问题是我无法以字符串形式发送所有内容,因为该应用返回错误请求状态
所以,我需要合法地合并这两张地图,将它们转换为JSON。
OR
我不知道是否可以将它们分别转换为 JSON 格式,然后添加它们?
有什么想法吗?
我使用jackson转换为json。
由于
答案 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()