一、工具類(lèi)
package com.mdw.platform.orders.config;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
/**
* 格式化
*
* double 精確到小數(shù)點(diǎn)后兩位
* Date: 2019/10/15 11:58
* title:title
* @author ht
*/
public class CustomerDoubleSerialize extends JsonSerializer<Double> {
/**
* 原本這里是 ##.00 ,帶來(lái)的問(wèn)題是如果數(shù)據(jù)庫(kù)數(shù)據(jù)為0.00返回“ .00 “經(jīng)評(píng)論指正,改為0.00
*/
private DecimalFormat df = new DecimalFormat("0.00");
@Override
public void serialize(Double arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException {
if(arg0 != null) {
BigDecimal bigDecimal = new BigDecimal(String.valueOf(arg0));
df.setRoundingMode(RoundingMode.HALF_UP);
//四舍五入。需要將數(shù)據(jù)轉(zhuǎn)成bigDecimal, 否則會(huì)存在經(jīng)度丟失問(wèn)題
String format = df.format(bigDecimal);
double aDouble = Double.parseDouble(format);
arg1.writeNumber(aDouble);//返回?cái)?shù)字格式
}
}
}
二、 實(shí)現(xiàn)
對(duì)實(shí)體類(lèi)加上@JsonSerialize(using = CustomerDoubleSerialize.class)
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* 提貨費(fèi)用
*/
@JsonSerialize(using = CustomerDoubleSerialize.class)
private Double pickUpCost;