Serialización en Jackson. ¿Cómo puedo especificar explícitamente qué subclase usar?
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 . 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; } }
GO TO FULL VERSION