• @JsonSerialize注解 对double保留两位小数


    @JsonSerialize作用:


    此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

    一、定义方法


    下面我想说4个例子:1、保留两位小数 2、保留整数 3、将ms转换成s  4、将日期格式化yy-mm-dd

    1、保留两位小数

    package org.jeecg.oyz.common.annotation;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.text.DecimalFormat;
    
    /**
     * 用户将double类型的数据格式化成小数点后两位的字符串数据:如输出为“900.00”.
     */
    public class OyzDoubleSerialize extends JsonSerializer<Double> {
    
        private DecimalFormat df = new DecimalFormat("#0.00");
    
        public OyzDoubleSerialize() {
        }
    
        @Override
        public void serialize(Double o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            if(o.toString() != null && !"-".equals(o)) {
                Double dd = Double.parseDouble(o.toString());
                jsonGenerator.writeString(df.format(dd));
            } else{
                jsonGenerator.writeString(o.toString());
            }
        }
    
    
    }

    2、保留整数

    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.text.DecimalFormat;
    
    /**
     * 用户将double类型的数据格式化成小数点后无保留字符串数据:如输出为“900”.
     *
     */
    public class CustomDoubleIntSerialize extends JsonSerializer<Double>{
    
        private DecimalFormat df = new DecimalFormat("##");
        
        @Override  
        public void serialize(Double value, JsonGenerator jgen,  
                SerializerProvider provider) throws IOException,  
                JsonProcessingException {  
            jgen.writeString(df.format(value));  
        }  
        
    }
    

    3、将ms转换成s

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

    4、将日期格式化yy-mm-dd

    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.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 时间序列化工具,直接将时间类型的转为yyyy-MM-dd类型的数据
     * 使用方法:在实体的get方法上直接加@JsonSerialize(using = CustomDateSerialize.class)
     * @author Shine
     */
    public class CustomDateSerialize extends JsonSerializer<Date> {
    
        //定义时间格式
        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
        @Override
        public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
            jsonGenerator.writeString(sdf.format(date));
        }
    }


    二、举例:关于保留两位小数注解方法使用

    @JsonSerialize(using = OyzDoubleSerialize.class)
    public Double getActPayBackMoney() {
        return this.actPayBackMoney;
    }
  • 相关阅读:
    报错:java.lang.IllegalStateException
    Eclipse中修改SVN用户名和密码方法
    部署服务器项目报错
    mybatis的双数据源创建
    SVN改地址eclipse怎么同步
    java中文乱码问题解决
    python3 内置函数
    python 生成器generator
    python 理解高阶函数
    python3 装饰器
  • 原文地址:https://www.cnblogs.com/haolb123/p/16198168.html
Copyright © 2020-2023  润新知