java中JsonSerializer用法,前后端单位转换必备

实际开发中,我们一定遇到过这样的问题:

  1. 后端用的时间单位是Date,前端用的秒
  2. 又比如,后端用的金额单位是分,前端用的是元

总之,单位不统一,而且各有各自的理由,统一不了,那就转换吧。
每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象,如何做到优雅的转换呢?只需两步

1. 写一个负责转换的类,里面写好规则

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;

/**
 * @version 1.0 2016/12/7
 * @since 1.0
 */
public class Date2LongSerialize extends JsonSerializer<Date> {

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

2. 在返回的参数里加上注解
@Data
@JsonNaming(PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy.class)
public class PledgeDetailItemVO implements Serializable {

    private static final long serialVersionUID = 2308418084162500432L;

    private String remark;

    @JsonSerialize(using = Date2LongSerialize.class)
    private Date addTime;
}

这样就能做到自动转换了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • Xcode8中Swift的使用 在Xcode8里有两套Swift的语法规则, 一套是2.3,一套是3.0(算是Sw...
    小唐朝阅读 3,909评论 0 2
  • 【这间店开了三年,关张已经五年,照片是后来拍的。门楼是我建的,参照的是苏作的样式,当初油漆的颜色是酱色,后来被房东...
    海月先生阅读 4,193评论 0 2