Jackson: “Unexpected token (VALUE_STRING), qui devrait FIELD_NAME:” lors de la désérialisation chaîne vide à la place de l'objet attendu

Je suis en utilisant Jackson désérialiser des réponses json à partir d'un serveur que je ne possède pas. Je suis en utilisant JsonTypeInfo annotations pour gérer polymorphes types de données. Voici la configuration que j'ai sur mon type de base (Thing dans ce cas):

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = Thing.class, name = "Thing"),
        @JsonSubTypes.Type(value = FancyThing.class, name = "FancyThing")
})

Tout fonctionne très bien jusqu'à ce que le serveur renvoie une chaîne vide où je m'attends à ce que l'un de ces types, puis-je en obtenir un de ces:

org.codehaus.jackson.map.JsonMappingException: Unexpected token (VALUE_STRING), expected FIELD_NAME: missing property 'type' that is to contain type id (for class com.stackoverflow.Thing)

Est-il une méthode recommandée pour le traitement des cas de ce genre? Comme je l'ai dit, je n'ai pas de contrôle sur le serveur, donc je dois gérer ce côté client. Je préfère gérer cela par la configuration de la ObjectMapper, mais ObjectMapper#configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true) ne semble pas fonctionner de la façon dont j'avais prévu. Des idées?

OriginalL'auteur CtrlF | 2013-11-04