Ich versuche, einige Werte von einem JSONObject in eine HashMap zu bekommen, aber ich erhalte ClassCastException in der letzten Zeile meiner for-Schleife.ClassCastException beim Versuch, Objekt in MapEntry zu transformieren
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
Ich habe versucht, mapEntry.getValue explizit zu werfen() auf ganzzahlige aber ich halte den gleichen Fehler. wenn ich führen Sie den Code ohne die letzte Zeile ich folgende Ausgabe:
key: peter value: 33
key: somekey value: 11
key: steve value: 38
key: guy value: 22
key: name value: 54
So kann ich sehen, dass mapEntry.getValue() scheint ganze Zahlen zu drucken, oder zumindest aber Zahlen, die ich sollte in der Lage zu werfen zu ganzen Zahlen.
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());
}
Was ist der eigentliche Typ von 'obj'? –
Ich werfe es explizit auf Entry, es ist genau das, was ich benutze, um durch den entrySet zu iterieren, nicht sicher, ob es bessere Möglichkeiten gibt, aber das schien gut zu funktionieren, bis dieser Bug auftauchte. –
Jacco
Was passiert, wenn Sie versuchen, den Eintrag zu verwenden? –
pepan