jackson自定义序列化器

工作中遇到的问题记录

当这种默认的jackson序列化满足不了要求的时候

ObjectMapper mapper = new ObjectMapper();
String string = mapper.writeValueAsString(bean);

需要自己定义序列化器

实现也很简单

public class MySerializer extends JsonSerializer<T> {
    @Override
    public void serialize(T t, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(t.toString());
    }
}

JsonGenerator 提供了各种类型的write,好像都是基本类型的,如果是日期格式的需要自己转换成字符串

然后在需要用该序列化器的类或者属性上增加注解

@JsonSerialize(using = MySerializer .class)

值得一提的是jackson提供了@JsonAnyGetter的注解,正是我一开始需要的,反而走了岔路,其实不需要自定义序列化器

该注解用来获取反序列时未匹配上的字段,一般用在Map属性里,将其中的key,value以其他属性平级的方式序列化出来

猜你喜欢

转载自blog.csdn.net/u013361107/article/details/103177170