版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012326462/article/details/83019881
自定义json序列化需要实现StdSerializer<T>或者JsonSerializer<T>。
我要序列化House这个类,加上注解,指定用于序列化的类
package com.xhx.json.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xhx.json.serializers.HourseSerializer;
import java.util.Date;
@JsonSerialize(using = HourseSerializer.class)
public class Hourse {
private String location;
private Date buildDate;
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Date getBuildDate() {
return buildDate;
}
public void setBuildDate(Date buildDate) {
this.buildDate = buildDate;
}
}
package com.xhx.json.serializers;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.xhx.json.entity.Hourse;
import java.io.IOException;
public class HourseSerializer extends StdSerializer<Hourse> {
public HourseSerializer(){
super(Hourse.class);
}
protected HourseSerializer(Class<Hourse> t) {
super(t);
}
@Override
public void serialize(Hourse hourse, JsonGenerator generator, SerializerProvider provider) throws IOException {
generator.writeStartObject();
generator.writeFieldName("id");
generator.writeString("自定义");
generator.writeFieldName("location");
generator.writeString(hourse.getLocation());
generator.writeObjectField("buildDate",hourse.getBuildDate());
generator.writeEndObject();
}
}
测试: