Liste aus JSON-Datei auslesen und in ArrayList speichern?
Hallo,
ich habe eine JSON Datei gegeben, welche ein Array von Einträgen enthält.
Dieses Array möchte ich deserialisieren, also beide Einträge in jeweils ein Objekt umwandeln. Dieses Objekt soll dann ein eine ArrayList hinzugefügt werden. Das ganze muss mithilfe des jackson ObjectMappers gemacht werden. Bisher hab ich folgendes:
//File jsonFile = new File("./files/JsonList.json");
ObjectMapper objmapper = new ObjectMapper();
ArrayList<User> jsonList = new ArrayList<User>();
jsonList = objmapper.readValue(new File("./files/JsonList.json"),ArrayList.class);
hier Fehler -> User usr1 = jsonList.get(0);
Der fehler der geworfen wird: class java.util.LinkedHashMap cannot be cast to class User(java.util.LinkedHashMap
Das "new File" in readValue ist eine alternative zu "jsonFile", dachte das würde etwas ändern, hat es aber nicht.
Danke im Voraus
MfG
1 Antwort
Du brauchst eine TypeReference, sonst kann Jackson die generische Klasse nicht erraten. In etwa so:
TypeReference userListRef = new TypeReference<List<User>>() {};
List<User> jsonList = objmapper.readValue(new File("./files/JsonList.json"), userListRef);
Siehe Doku.
Natürlich muss deine User-Klasse auch ein deserialisierbares POJO sein (Getter/Setter bzw. entsprechende Konstruktoren), sonst brauchst du Annotationen. Auch das ist aber dokumentiert.