DynamoDB'deki bazı verileri, karmaşık nesneyi JSON'a dönüştürmek için Jackson'ı kullanarak depolayan bir uygulama var.LinkedHashMap'i Karmaşık Nesnesine Döküm
Mesela ben marshalling ediyorum nesne şöyle olabilir:
private int anInteger;
private SomeOtherObject;
ve SomeOtherObject şöyle olabilir:
private long aLong;
private float aFloat;
SomeObject şöyle görünebilir
private String aString;
private List<SomeObject> someObjectList;
Bu, nesnenin bir sorun haline getirilmemesi ve bir JSON dizesi olarak DB'de depolanması iyi bir şeydir. o DynamoDB Jackson veri almak için zamanı geldiğinde
otomatik JSON alır ve 'someObjectList' bir List<SomeObject>
olarak List<LinkedHashMap>
değil döndürülür HARİÇ ... geri dönüştürür! Bu Jackson için standart bir davranış, bunun gerçekleştiği bir yanlışlık değil.
Şimdi bu bir soruna yol açıyor. Kod tabanım, List<SomeObject>
ile uğraştığını düşünüyor, ancak gerçek şu ki, bir List<LinkedHashMap>
işleniyor! Sorum şu: LinkedHashMap'ımı bir 'SomeObject' haline nasıl geri döndürebilirim. Açıkçası bu bir manüel işlemdir, ama demek istediğim, değerleri ayıklayamıyorum bile.
Eğer bunu yaparsam:
for (LinkedHashMap lhm : someObjectList) {
// Convert the values back
}
Ben someObjectList türü olduğunu söyleyip bir derleme hatası alıyorum 'SomeObject' değil LinkedHashMap.
Eğer bunu yaparsam:
for (SomeObject lhm : someObjectList) {
// Convert the values back
}
Ben LinkedHashMap 'SomeObject' artığını olamaz bana bir çalışma zamanı hatası alıyorum.
Ancak, ikinci örnek POJO türüne statik bir başvuru gerektirmez. –
@ BoSøborgPetersen Bunun ile ne demek istediğine emin değilim ... – StaxMan
Awesome. Yapmam gereken tek şey, POJO sınıfının bir varsayılan kurucu içerdiğinden emin olmaktır (diğer parametreli kurucuların mevcut olması durumunda). – Gnana