2013-09-20 2 views
0

Я пытаюсь использовать собственный десериализатор в Джексоне для десериализации некоторых объектов json. Однако, когда я пытаюсь иметь ObjectMapper читать JSON, происходит следующее исключение:IllegalStateException возникает при использовании аннотации Jackson @JsonDeserialize

java.lang.IllegalStateException: AnnotationIntrospector returned Class com.Geometry.GeometryDeserializer; expected Class<JsonDeserializer> 

Я несколько в недоумении, что делать здесь, так как кажется, что AnnotationIntrospector жалуется, что мой GeometryDeserializer является не подкласс JsonDeserializer, когда это ясно.

Вот где я создаю Mapper Объект:

public void deserializeJson(String json) { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.addMixInAnnotations(Feature.class, MixIn.class); 
    Feature feature = mapper.readValue(json, Feature.class); 
} 

... мой Mix В классе:

abstract class MixIn { 
    @JsonDeserialize(using=GeometryDeserializer.class) 
    abstract void setGeometry(Geometry geometry); 
} 

... и мой десериализатор:

public class GeometryDeserializer extends JsonDeserializer<Geometry> { 
    @Override 
    public Geometry deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException { 
     //stuff happens 
    } 
} 

Любая обратная связь/помощь будет значительно оценена.

Спасибо.

ответ

0

Дикая догадка: вы случайно смешиваете Jackson 1.x и Jackson 2.x? Названия классов в основном одинаковы, но живут в разных пакетах - все работает при использовании одного набора классов, но IDE могут вызывать случайные перетасовки.

Смежные вопросы