使用Jackson @JsonDeserialize注释时发生IllegalStateException

时间:2013-09-20 00:58:12

标签: java json jackson deserialization json-deserialization

我正在尝试在Jackson中使用自定义反序列化器来反序列化一些json对象。但是,当我尝试让ObjectMapper读取json时,会发生以下异常:

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

我有点不知道该怎么做,因为看起来AnnotationIntrospector抱怨我的GeometryDeserializer不是JsonDeserializer的子类,当它显然是。

这是我创建Object Mapper的地方:

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

...我的混音在课堂上:

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
    }
}

任何反馈/协助都会受到很大关注。

感谢。

1 个答案:

答案 0 :(得分:0)

狂野猜测:你是不小心混淆了Jackson 1.x和Jackson 2.x类型?类名大多相同,但存在于不同的包中 - 当使用一组类时,事情会起作用,但IDE可能会导致意外的混淆。