use*_*327 10 java ajax json annotations jackson
我目前正在使用Jackson 1.4.2并尝试code从我们的UI传递回Java控制器(Servlet)的值的反序列化(类型信息的唯一标识符).
有多种类型(例如ABCType,XYZType等等)都从a扩展AbstractType,但每种具体类型都有一个静态工厂方法,它作为单个参数,唯一标识符,并返回类型对象(名称,关联类型,描述,由该标识符表示的有效首字母缩写词等.每种具体类型(例如XYZType)中的静态方法都注释为@JsonCreator:
@JsonCreator
public static XYZType getInstance(String code) {
.....
}
Run Code Online (Sandbox Code Playgroud)
我看到的问题是杰克逊的映射器试图将json反序列化为这些类型的异常:
引起:org.codehaus.jackson.map.JsonMappingException:找不到类型[simple type,class com.company.type.XYZtype]的默认构造函数:无法从Json对象实例化.
我在这里错过了@JsonCreator静态工厂方法的注释(或者它是否与Jackson 1.4.2在从AbstractType?扩展的具体类型中挣扎?)?
Pau*_*aul 14
注释@JsonCreator需要注释@JsonProperty.这个Jackson wiki页面提供的信息很少,但提供了示例代码:
@JsonCreator
public Name(@JsonProperty("givenName") String g, @JsonProperty("familyName") String f)
{
givenName = g;
familyName = f;
}
Run Code Online (Sandbox Code Playgroud)
你会在这篇博文中找到更详细的解释.
因此,您的示例代码应如下所示:
@JsonCreator
public static XYZType getInstance(@JsonProperty("someCode") String code)
{
...
}
Run Code Online (Sandbox Code Playgroud)