@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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析