1. 程式人生 > >fastjson轉換數字時,格式化小數點

fastjson轉換數字時,格式化小數點

使用fastjson類庫轉換java物件時,對於BigDecimal型別,有時需要特殊格式,比如:

1.0,轉為json時候,要求顯式為1,因此需要在轉換時做處理。步驟如下:

1、新建類,實現ValueFilter介面:

import java.math.BigDecimal;
import com.alibaba.fastjson.serializer.ValueFilter;

/**
 * 處理BigDecimal小數部分為0的情況
 * 123.5 -> 123.5
 * 12.0 -> 12
 * 12.00 -> 12
 */
public class BigDecimalValueFilter implements ValueFilter {
	/**
	 * @param object 物件
	 * @param name 物件的欄位的名稱
	 * @param value 物件的欄位的值
	 */
	@Override
	public Object process(Object object, String name, Object value) {
		if(null != value && value instanceof BigDecimal) {
			String str = value.toString();
			if(str.endsWith(".0")) {
				str = str.substring(0, str.length()-2);
			} else if(str.endsWith(".00")) {
				str = str.substring(0, str.length()-3);
			} else {
				str = value.toString();
			}
			return str;
		}
		return value;
	}
}
2、物件轉為json時,第二個引數填入該類即可。
BigDecimalValueFilter filter = new BigDecimalValueFilter();
String contentJson = JSON.toJSONString(request, filter);

舉一反三,可實現自定義的各種格式轉換。