Jackson JsonTypeInfo.Comme.EXTERNAL_PROPERTY ne fonctionne pas comme prévu

Je suis à l'aide de Jackson pour parser JSON que je n'ai aucun contrôle dessus. Le JSON ressemble à ceci:

{
    "status":"0"
    "type":"type1"
    "info": {
       //additional fields
    }
}

Ma classe ressemble à ce

public class Response {
    private String status;
    private String type;
    private Info info
}

La sous-classe de l'Info que j'ai utiliser dépend du type de la propriété, de sorte que mon mapping pour l'info, c'est

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes(value = {
        @JsonSubTypes.Type(value = Type1Info.class, name = "type1"),
        @JsonSubTypes.Type(value = Type2Info.class, name = "type2") })
public abstract class Info {
    //some fields
}

Aussi loin que je peux dire que c'est la bonne manière d'utiliser les informations de type lorsque l'élément distinctif est au même niveau que l'élément qui doit être utilisé. Mais cela ne fonctionne pas, j'obtiens toujours la même erreur:

com.fasterxml.jackson.databind.JsonMappingException: Unexpected token
(END_OBJECT), qui devrait FIELD_NAME: manquant de la propriété "type" qui est à
contient un id de type

Si je change EXTERNAL_PROPERTY à la PROPRIÉTÉ, je reçois toujours le même message d'erreur. Est ma compréhension de EXTERNAL_PROPERTY mal?

  • J'ai exactement ce problème avec ma conception du EXTERNAL_PROPERTY est censé fonctionner. Avez-vous le faire avancer sur ça?
  • Malheureusement pas Marc. Nous avons fini par changer le modèle d'objet complètement pour éviter ce problème.
InformationsquelleAutor Gaurav | 2013-09-12