Mam aplikację, która przechowuje dane w DynamoDB za pomocą Jacksona, aby przekazać mój złożony obiekt do JSON.Przesyłanie obiektu LinkedHashMap do obiektu złożonego
Na przykład obiekt jestem etapowy może wyglądać następująco:
private String aString;
private List<SomeObject> someObjectList;
Gdzie SomeObject może wyglądać następująco:
private int anInteger;
private SomeOtherObject;
i SomeOtherObject może wyglądać następująco:
private long aLong;
private float aFloat;
To jest w porządku, ponieważ obiekt jest ładowany bez problemu i przechowywany w DB jako ciąg JSON.
Kiedy przychodzi czas, aby odzyskać dane z DynamoDB Jackson automatycznie pobiera JSON i konwertuje go z powrotem ... oprócz tego, że „someObjectList” jest zwracany jako nie List<LinkedHashMap>
jako List<SomeObject>
! Jest to standardowe zachowanie Jacksona, nie jest to pomyłka, że tak się dzieje.
Więc teraz to prowadzi do problemu. Moja baza kodowa myśli o tym, że ma do czynienia z List<SomeObject>
, ale w rzeczywistości jest to obsługa List<LinkedHashMap>
! Moje pytanie brzmi: w jaki sposób mogę przenieść moją LinkedHashMap w "SomeObject". Oczywiście jest to proces ręczny, ale mam na myśli to, że nie mogę nawet wyodrębnić wartości.
Gdybym to zrobić:
for (LinkedHashMap lhm : someObjectList) {
// Convert the values back
}
otrzymuję błąd kompilacji mówi mi, że someObjectList jest typu „SomeObject” nie LinkedHashMap.
Gdybym to zrobić:
for (SomeObject lhm : someObjectList) {
// Convert the values back
}
otrzymuję błąd wykonania mówi mi, że LinkedHashMap nie może być rzucony na „SomeObject”.
Jednak drugi przykład nie wymaga statycznego odniesienia do typu POJO. –
@ BoSøborgPetersen Nie jestem całkiem pewien, co masz na myśli przez to ... – StaxMan
Awesome. Jedyne, co musiałem zrobić, to upewnić się, że klasa POJO zawiera domyślny konstruktor (w przypadku innych konstruktorów sparametryzowanych). – Gnana