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

问题描述 投票:0回答:1

这是我的班级

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

    private final String error;

我只能改变一堂课。 jackson可以序列化它而不配置objectMapper

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

编辑:我已经这样修复了:

公共课回应{

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;
}
java jackson jackson2 jackson-databind
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.