工作中遇到的问题记录
当这种默认的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以其他属性平级的方式序列化出来