我正在尝试从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());
}
如果您尝试这样做:
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
,它应该编译罚款。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句