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