我正在尝试从JSONObject中获取一些值到HashMap中,但是我在for循环的最后一行继续得到ClassCastException。
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
我试图将mapEntry.getValue()显式地转换为整数,但我一直得到同样的错误。如果我运行没有最后一行的代码,我得到以下输出:
key: peter value: 33
key: somekey value: 11
key: steve value: 38
key: guy value: 22
key: name value: 54
所以我可以看到mapEntry.getValue()似乎打印整数,或者至少是我应该能够转换为整数的数字。
JSONObject json = getJsonFromFile(filePath);
HashMap<String, Integer> entries = new HashMap<>();
for (Object obj : json.entrySet()) {
Entry<String, Integer> mapEntry = (Entry<String, Integer>) obj;
System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
entries.put(mapEntry.getKey(), mapEntry.getValue());
}
答案 0 :(得分:1)
如果您尝试这样做:
JSONObject json = getJsonFromFile(filePath);
HashMap<String, Number> entries = new HashMap<>();
for (Object obj : json.entrySet()) {
Entry<String, Number> mapEntry = (Entry<String, Number>) obj;
System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
entries.put(mapEntry.getKey(), mapEntry.getValue());
}
Number
是Integer
和Long
的超类,它应该编译得很好。