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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jackson序列化通用对象相关的知识,希望对你有一定的参考价值。

这是我的班级

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;
}
答案

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

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

以上是关于如何使用jackson序列化通用对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jackson 序列化通用接口子类

如何在 Jackson 中将对象序列化为 ObjectNode 的值?

如何使用 Jackson 反序列化来自 json 对象的对象数组

如何使用jackson(Java)反序列化对象中的json对象?

Jackson 没有反序列化已序列化的通用列表

如何将属性序列化为 json 对象?