JavaRush /Java-Blog /Random-DE /Serialisierung in Jackson. Wie kann ich explizit angeben,...
ColdDeath
Level 34
Москва

Serialisierung in Jackson. Wie kann ich explizit angeben, welche Unterklasse verwendet werden soll?

Veröffentlicht in der Gruppe Random-DE
Nachdem ich Vorlesungen auf Stufe 33 gelesen habe, kann ich nicht verstehen, wie man bei der Serialisierung in JSON mit Jackson ein zusätzliches Feld, den Typ, für Klassen mit denselben Feldern angibt, wie man das in Vorlesung 4 macht. Ich gebe an, dass ich eintreten möchte das Typfeld, aber es passiert nichts Serialisierung in Jackson.  Wie kann ich explizit angeben, welche Unterklasse verwendet werden soll?  - 1 . Bitte sag mir, was mache ich falsch? public class Solution { public static void main(String[] args) throws IOException { Cat cat = new Cat(); cat.name = "Murka"; Kat. Alter = 5; Kat.gewicht = 3; Hund Hund = neuer Hund(); dog.name = „Killer“; Hundealter = 8; dog.owner = „Bill Jefferson“; Anordnungsliste Haustiere = neue ArrayList(); Haustiere.add(Katze); Haustiere.add(Hund); StringWriterwriter = new StringWriter(); ConvertToJSON(Writer, Haustiere); System.out.println(writer.toString()); //[{"name": "Murka", "Alter": 5, "Gewicht": 3}, {"name": "Killer", "Alter": 8, "Besitzer": "Bill Jefferson"}] } public static void ConvertToJSON(StringWriterwriter, Object object) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(writer, object); } @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = Cat.class, name = "cat"), @JsonSubTypes.Type(value = Dog.class , name = "dog") }) public static class Cat erweitert Pet { public int age; öffentliches Int-Gewicht; } public static class Dog erweitert Pet { public int age; öffentlicher String-Besitzer; } public static class Pet { public String name; } }
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION