Autore Topic: Jackson Polymorphic Deserialization  (Letto 299 volte)

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Jackson Polymorphic Deserialization
« il: 08 Ottobre 2014, 09:23:12 CEST »
0
Buongiorno, ho una domanda su : Polymorphic Deserialization con Jackson.

La mia domanda è la seguente:

Devo deserializzare un json simile a questo:
Codice: [Seleziona]

   "arrayObj1":[ 
      { 
         "type":"t1",
         "value":[ 
            { 
               "value1":"a"
            },
            { 
               "value2":"b"
            }
         ],
         "altreInfo":"abc"
      }
   ]
}

Quindi per Deserializzare questo tipo di Json, ho pensato ad un approccio del genere:
Codice (Java): [Seleziona]
public class ClassA{;
    private ArrayObj1[] arrayObj1;
}
Codice (Java): [Seleziona]
public class ArrayObj1 extends Value{;
    private String type;
    private Value [] value;

...
 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
                  include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
                  property = "type")
    @JsonSubTypes(value={
            @JsonSubTypes.Type(value = T1.class, name = "t1")
    })
    public void setValue (Value [] value){
        this.value = value;
    }
}

e in fine
Codice (Java): [Seleziona]
public abstract class Value {

}

L'errore è :

Codice: [Seleziona]
com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class ... etc
Come posso fare? Grazie.

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Jackson Polymorphic Deserialization
« Risposta #1 il: 10 Ottobre 2014, 13:51:20 CEST »
0
Chiudete pure, la risposta è:

Non si può fare si deve usare un Deserializer Custom, fatto a manina.

Saluti