Saya memiliki kelas Java MyPojoyang ingin saya deserialisasi dari JSON. Saya telah mengonfigurasi kelas MixIn khusus,, MyPojoDeMixInuntuk membantu saya dengan deserialisasi. MyPojohanya memiliki intdan Stringvariabel instan digabungkan dengan pengambil dan penyetel yang tepat. MyPojoDeMixInterlihat seperti ini:
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
Di klien uji saya, saya melakukan hal berikut, tetapi tentu saja itu tidak berfungsi pada waktu kompilasi karena ada yang JsonMappingExceptionterkait dengan ketidakcocokan tipe.
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
Saya sadar bahwa saya dapat mengatasi masalah ini dengan membuat objek "Respons" yang hanya memiliki satu ArrayList<MyPojo>di dalamnya, tetapi kemudian saya harus membuat objek yang agak tidak berguna ini untuk setiap jenis yang ingin saya kembalikan.
Saya juga melihat JacksonInFiveMinutes secara online tetapi kesulitan memahami hal-hal tentang Map<A,B>dan bagaimana kaitannya dengan masalah saya. Jika Anda tidak tahu, saya sama sekali baru mengenal Java dan berasal dari latar belakang Obj-C. Mereka secara khusus menyebutkan:
Selain mengikat ke POJO dan tipe "sederhana", ada satu varian tambahan: yang mengikat ke kontainer generik (diketik). Kasus ini memerlukan penanganan khusus karena apa yang disebut Type Erasure (digunakan oleh Java untuk mengimplementasikan generik dengan cara yang agak kompatibel ke belakang), yang mencegah Anda menggunakan sesuatu seperti Collection.class (yang tidak dapat dikompilasi).
Jadi, jika Anda ingin mengikat data ke dalam Peta, Anda perlu menggunakan:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
Bagaimana saya bisa melakukan deserialisasi langsung ke ArrayList?