Я пытаюсь получить некоторые значения из JSONObject в HashMap, но я продолжаю получать ClassCastException в последней строке цикла for.ClassCastException при попытке применить объект к MapEntry
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());
}
Каков фактический тип 'obj'? –
Я явно вставляю его в Entry, это то, что я использую, чтобы выполнять итерацию через entrySet, не будучи уверенным, есть ли лучшие способы, но это, казалось, хорошо работало, пока эта ошибка не появилась. –
Jacco
Что произойдет, если вы попытаетесь использовать Entry вместо этого? –
pepan