- 创建一个 (String, Object) hashMap 并放入不同类型的值。
- 将 hashmap 序列化为 json 字符串,然后转换回 (String, String) 的 hashmap
当我尝试获取键“key2”的值时,它会抛出一个异常,提示“线程“main”中的异常 java.lang.ClassCastException:java.lang.Integer 无法转换为 java.lang.String” .
有什么好的方法可以解释一下吗?这是否意味着即使我有一个 (String, String) 映射,其中的值也不是必需的 String?
对于任何困惑,我们深表歉意。如果有不清楚的地方请告诉我。
Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", 99);
map.put("key3", new Date());
JsonUtil jsonUtil = new JsonUtil();
String s = jsonUtil.toJson(map);
HashMap<String, String> newMap = jsonUtil.fromJson(s, HashMap.class);
String value = newMap.get("key2");
最佳答案
在map中,键“key2”的值为99,它是一个整数。异常可能是在倒数第二行而不是最后一行中引发的。我不完全确定为什么要序列化然后立即反序列化,但如果您只想将 99 作为像“99”这样的字符串,则执行此操作的方法是:
String value = String.valueOf(map.get("key2"));
在这种情况下,序列化和反序列化是不必要的。
更好的是,如果您只想要 Map<String, String>
在整个过程中,你可以这样做:
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", String.valueOf(99));
map.put(new Date().toString());
关于java - <String, String> HashMap 中的整数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264846/