我目前正在使用 Jackson 1.4.2 并尝试对code
从我们的 UI 传递回 Java 控制器 (Servlet) 的值(类型信息的唯一标识符)进行反序列化。
有多种类型(例如ABCType
,XYZType
等)都从 扩展而来AbstractType
,但每个具体类型都有一个静态工厂方法,该方法接受一个参数、一个唯一标识符,并返回类型对象(名称、关联类型、描述、该标识符表示的有效首字母缩略词等)。每个具体类型(例如XYZType
)中的静态方法都用 注释@JsonCreator
:
@JsonCreator
public static XYZType getInstance(String code) {
.....
}
我看到的问题是杰克逊的映射器试图将 json 反序列化为这些类型时抛出的异常:
原因:org.codehaus.jackson.map.JsonMappingException:没有找到类型[简单类型,类com.company.type.XYZtype]的默认构造函数:无法从Json对象实例化。
我在这里对@JsonCreator
静态工厂方法的注释缺少什么(或者它与杰克逊 1.4.2 与从一个扩展的具体类型作斗争AbstractType
?)?