序列化

作者: 盗生一 | 来源:发表于2020-12-02 18:48 被阅读0次

    https://blog.csdn.net/spicehava1/article/details/79898949

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

    • 后端用的时间单位是Date,前端用的秒

    • 又比如,后端用的金额单位是分,前端用的是元

    • 总之,单位不统一,而且各有各自的理由,统一不了,那就转换吧。
      每次返回给前端时再转换一遍,返回给前端的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;
      }
      
      

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

              </div>
              <p class="tags">标签:<a href="http://www.liaoshixiong.cn/tag/jsonserializer/">jsonserializer</a>, <a href="http://www.liaoshixiong.cn/tag/json/">json</a>, <a href="http://www.liaoshixiong.cn/tag/%E5%8D%95%E4%BD%8D%E8%BD%AC%E6%8D%A2/">单位转换</a></p>
          </div>
      

    相关文章

      网友评论

          本文标题:序列化

          本文链接:https://www.haomeiwen.com/subject/ezuuwktx.html