我们在序列化POJO时,有时候需要将POJO中某些字段转换成String输出到Json中,如定义一个POJO:
@Data
public static class MyBean {
private BigDecimal a;
private Integer b;
private String c;
}
需要将BigDecimal转换为Json中的String字符串,那么需要定义一个ValueFilter:
public class BigDecimalValueFilter implements ValueFilter {
@Override
public Object process(Object object, String name, Object value) {
if(value instanceof BigDecimal) {
return ((BigDecimal) value).stripTrailingZeros().toPlainString();
}
return value;
}
}
测试一下:
@Test
public void testFastJson() {
MyBean myBean = new MyBean();
myBean.setA(new BigDecimal("123.4500000"));
myBean.setB(1);
myBean.setC("123123");
// 将 JavaBean 转换为字符串
String jsonString = JSON.toJSONString(myBean, new BigDecimalValueFilter());
System.out.println(jsonString);
}
结果如下:
{"a":"123.45","b":1,"c":"123123"}