Deserialización polimórfica de JSON con jackson, tipo de propiedad se convierte en "null"
Estoy usando Jackson para convertir una cadena de Json grande en varias clases y subclases.
Tengo una lista de objetos, cada uno que contiene un objeto del nodo, un último objeto del resultado y un arsenal de los niños. El array children contiene una lista de objetos con exactamente la misma configuración. Esto continúa para 3 o 4 capas.
- Android SQLiteException "no such table" durante la compilación: tabla INSERT INTO
- FFT de audio Android para recuperar la magnitud de frecuencia específica mediante audiorecord
- Programe un par de dispositivos Bluetooth sin que el usuario introduzca el pin
- Glide Extracción de imágenes
- Android - los cálculos con el tiempo transcurrido en el cronómetro
Cada nodo de capas es de una subclase diferente, que se extiende desde una superclase de nodos. He anotado el nodo de la superclase con las siguientes anotaciones:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = Type1ResponseDto.class, name = "Type1"), @JsonSubTypes.Type(value = Type2ResponseDto.class, name = "Type2"), @JsonSubTypes.Type(value = Type3ResponseDto.class, name = "Type3"), @JsonSubTypes.Type(value = Type4ResponseDto.class, name = "Type4"), @JsonSubTypes.Type(value = Type5ResponseDto.class, name = "Type5") })
Esto parece funcionar, ya que todas las subclases se asignan.
Sin embargo, esto de alguna manera resulta en la propiedad "tipo" que se establece en null.
¿Alguna idea de por qué sucede esto?
- Anulación de registro de GCM causando que la aplicación se bloquee
- Android - Obtiene el tipo MIME desde un archivo sin extensión
- OSMDroid PathOverlay
- ¿Por qué mi editText no presenta la salida correcta en android?
- Android O casting para findViewById ya no es necesario?
- ¿Cuándo debe y no debe romperse de OOP para velocidad / rendimiento?
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () dentro de AsyncTask para ProgressDialog
- JodaTime - Compruebe si LocalTime es después de ahora y ahora antes de otro LocalTime
Necesitaba añadir visible=true
para que la propiedad type apareciera:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type",visible = true) @JsonSubTypes({ @JsonSubTypes.Type(value = Type1ResponseDto.class,name = "Type1"), @JsonSubTypes.Type(value = Type2ResponseDto.class, name = "Type2"), @JsonSubTypes.Type(value = Type3ResponseDto.class, name = "Type3"), @JsonSubTypes.Type(value = Type4ResponseDto.class, name = "Type4") })
- InputStream.read () causa NullPointerException (después de haber comprobado inputStream! = Null)
- ¿Cómo UID de una aplicación determinada durante la instalación en Android?