@JsonSerialize的使用

自定义序列化转换类

实际开发中,我们一定遇到过这样的问题:前端显示和后台存储数据单位不统一,而且各有各自的理由,统一不了,那就转换吧。每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象,如何做到优雅的转换呢?

package com.example.meal.utils.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.util.Date;

public class Date2LongSerializer extends JsonSerializer {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
         jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}


//使用
@JsonSerialize(using = Date2LongSerializer.class)
private Date crateTime;
去掉为空的key值对象

在后台接口返回数据的时候,为了满足restful 的规范,如果数据对象为null就不序列化该字段

@JsonSerialize(include =  JsonSerialize.Inclusion.NON_NULL)
private String userName;

这样就如果是null的对象,key也会消失

你可能感兴趣的:(@JsonSerialize的使用)