我对杰克逊很陌生,所以如果有明显的解决方案,请提前道歉。
我正在编写Jersey客户端,并尝试以以下格式反序列化JSON:
{
"success": true,
"someEntity": {
"someField": 123
}
}
现在,如果“成功”字段不存在,这将非常简单,因为我可以将ObjectMapper配置为使用DeserializationFeature.UNWRAP_ROOT_VALUE
,并将其内容反序列化为SomeEntity。
我的Response对象看起来像:
public class Response<T>
{
private boolean success;
private T entity;
public T getEntity()
{
return entity;
}
public boolean isSuccess() {
return success;
}
}
entity
应该在哪里...
public class SomeEntity
{
private int someField;
public int getSomeField()
{
return someField;
}
}
在不进行任何配置的情况下尝试将上述JSON反序列化为Response<SomeEntity>
时,我得到:Unrecognized field "someEntity" (class Response)
我很幸运地在@JsonProperty("someEntity")
字段中添加了entity
,但是显然我希望这个响应类是通用的,而不必为传递给客户端的每个实体创建一个。
我确定有一个简单的解决方案,我看不到-谢谢。
编辑:我也尝试使用@JsonTypeInfo
无济于事。