Polymorphisme dans jackson annotations: @jsontypeinfo usage
je voudrais savoir si @JsonTypeInfo l'annotation peut être utilisée pour les interfaces. J'ai un ensemble de classes qui devraient être sérialisées et désérialisées.
voici ce que j'essaie de faire. J'ai deux classes d'implémentation Sub1, Sub2 mise en oeuvre MyInt. Certaines classes de modèles ont la référence d'interface pour les types d'implémentation. Je voudrais desérialiser les objets en fonction du polymorphisme
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT)
@JsonSubTypes({
@Type(name="sub1", value=Sub1.class),
@Type(name="sub2", value=Sub2.class)})
public interface MyInt{
}
@JsonTypeName("sub1")
public Sub1 implements MyInt{
}
@JsonTypeName("sub2")
public Sub2 implements MyInt{
}
j'ai le JsonMappingException:
Unexpected token( END_OBJECT), expected FIELD_NAME: need JSON String qui contient le type id
1 réponses
@JsonSubTypes.Le Type doit avoir une valeur et un nom comme ça,
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT, property="type")
@JsonSubTypes({
@JsonSubTypes.Type(value=Dog.class, name="dog"),
@JsonSubTypes.Type(value=Cat.class, name="cat")
})
Dans la sous-classe, utiliser @JsonTypeName("dog") pour dire le nom.
les valeurs 'dog' et 'cat' seront définies dans la propriété nommée 'type'.