JavaRush /Blog Java /Random-ES /Serialización en Jackson. ¿Cómo puedo especificar explíci...
ColdDeath
Nivel 34
Москва

Serialización en Jackson. ¿Cómo puedo especificar explícitamente qué subclase usar?

Publicado en el grupo Random-ES
Habiendo leído conferencias en el nivel 33, no puedo entender cómo, al serializar en JSON usando Jackson, especificar un campo adicional, tipo, para clases con los mismos campos, cómo hacer esto en la conferencia 4. Indico que quiero ingresar el campo tipo, pero no pasa nada Serialización en Jackson.  ¿Cómo puedo especificar explícitamente qué subclase usar?  - 1 . Por favor dime ¿qué estoy haciendo mal? Solución de clase pública { public static void main(String[] args) lanza IOException { Cat cat = new Cat(); gato.nombre = "Murka"; edad.cat = 5; peso del gato = 3; Perro perro = nuevo Perro(); perro.nombre = "Asesino"; edad.perro = 8; perro.propietario = "Bill Jefferson"; Lista de arreglo mascotas = nueva ArrayList(); mascotas.add(gato); mascotas.add(perro); Escritor StringWriter = nuevo StringWriter(); convertToJSON(escritor, mascotas); System.out.println(writer.toString()); //[{"nombre":"Murka","edad":5,"peso":3},{"nombre":"Asesino","edad":8,"propietario":"Bill Jefferson"}] } public static void convertToJSON (escritor StringWriter, objeto Object) lanza IOException { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(escritor, objeto); } @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, propiedad = "tipo") @JsonSubTypes({ @JsonSubTypes.Type(valor = Cat.class, nombre = "gato"), @JsonSubTypes.Type(valor = Dog.class , nombre = "perro") }) clase estática pública Gato extiende Mascota { public int age; peso int público; } clase estática pública Perro extiende Mascota { public int age; propietario de cadena pública; } clase estática pública Mascota { nombre de cadena pública; } }
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION