Serialisasi di Jackson. Bagaimana saya bisa secara eksplisit menentukan subkelas mana yang akan digunakan?
Setelah membaca kuliah di level 33, saya tidak mengerti bagaimana, ketika membuat serial ke JSON menggunakan Jackson, tentukan bidang tambahan, ketik, untuk kelas dengan bidang yang sama, bagaimana melakukannya di kuliah 4. Saya menunjukkan bahwa saya ingin masuk bidang type, tetapi tidak terjadi apa-apa . Tolong beri tahu saya apa yang saya lakukan salah? Solusi kelas publik { public static void main(String[] args) throws IOException { Cat cat = new Cat(); cat.name = "Murka"; kucing.umur = 5; kucing.berat = 3; Anjing anjing = Anjing baru(); dog.name = "Pembunuh"; anjing.umur = 8; anjing.pemilik = "Bill Jefferson"; Daftar Array
hewan peliharaan = Daftar Array baru(); hewan peliharaan.tambahkan(kucing); hewan peliharaan.tambahkan(anjing); Penulis StringWriter = StringWriter baru(); convertToJSON(penulis, hewan peliharaan); Sistem.keluar.println(penulis.toString()); //[{"name":"Murka","age":5,"weight":3},{"name":"Killer","age":8,"owner":"Bill Jefferson"}] } public static void convertToJSON(penulis StringWriter, objek Objek) melempar IOException { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(penulis, objek); } @JsonTypeInfo(gunakan = JsonTypeInfo.Id.NAME, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = Cat.class, name = "cat"), @JsonSubTypes.Type(value = Dog.class , nama = "anjing") }) public static class Cat extends Pet { public int age; bobot int publik; } public static class Dog extends Pet { public int age; pemilik String publik; } kelas statis publik Pet { nama String publik; } }
GO TO FULL VERSION