自定义Jackson序列化 @JsonSerialize

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
    }
}

测试:

猜你喜欢

转载自blog.csdn.net/u012326462/article/details/83019881