如何使用jackson序列化通用对象

时间:2018-03-02 10:43:33

标签: java jackson jackson2 jackson-databind

这是我的班级

public class Response<T> {
    private final T data;

    private final String error;

我只能改变一个班级。可jackson序列化而无需配置objectMapper

编辑: 我在Spring mvc @RestController中使用此对象作为方法结果参数。而jackson的objectMapper.canSerialize(Response.class)返回false。

编辑: 我用这种方式解决了这个问题:

public class Response {

private T data;

private String error;

@JsonIgnore
@JsonTypeInfo(
        use = JsonTypeInfo.Id.CLASS,
        include = JsonTypeInfo.As.PROPERTY
)
private Class<T> type;

...

@JsonIgnore
public Class<T> getType() {
    return type;
}

1 个答案:

答案 0 :(得分:0)

在序列化时,我认为不存在问题,因为T data将保留一些真实对象的对象,而像Gson这样的库将能够正确地序列化它们,但是反序列化可能存在问题由于它不知道它必须反序列化的类型。为此,您可能需要传递特定的Type,以便告诉库您要尝试反序列化的类型。(注意:我主要与Gson合作,因此答案会受到影响)

参考:https://stackoverflow.com/a/7299718/1093333