自定义Jackson序列化 @JsonSerialize

自定义json序列化需要实现StdSerializer或者JsonSerializer

我要序列化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 {

    public HourseSerializer(){
        super(Hourse.class);
    }

    protected HourseSerializer(Class 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();
    }
}

 

测试:

自定义Jackson序列化 @JsonSerialize_第1张图片

**实时内容请关注微信公众号,公众号与博客同时更新:程序员星星**

 

你可能感兴趣的:(jackson)