Fastjson: JSON对Double型字段进行序列化后,反序列化会变成BigDecimal

Created on 21 Apr 2017  ·  5Comments  ·  Source: alibaba/fastjson

相信这个问题我可能不是第一个提,JSON中所有带小数位的字段,反序列化后都会变成BigDecimal,我觉得这是一种偷懒的做法,反序列化为BigDecimal当然不会错,因为它有最大的精度,但这样我们的程序就丢失了原来JSON应有的属性,比如如果将这个反序列化后的JSON存入MongoDB,它就会报错,因为它根本不支持BigDecimal直接存入数据库,就没有办法将JSON进行序列化时,保留原来栏位的类型信息,在反序列化时一一还原回来吗?不管是日期,浮点还是其他?

question

Most helpful comment

写了一个关闭这个特性的方法:
https://github.com/alibaba/fastjson/wiki/deserialize_disable_bigdecimal_cn
看是否满足你的需求

All 5 comments

写了一个关闭这个特性的方法:
https://github.com/alibaba/fastjson/wiki/deserialize_disable_bigdecimal_cn
看是否满足你的需求

demo中写的局部生效
int disableDecimalFeature = JSON.DEFAULT_PARSER_FEATURE &= ~Feature.UseBigDecimal.getMask();
依然会全局生效,我觉得应该是
int disableDecimalFeature = JSON.DEFAULT_PARSER_FEATURE & ~Feature.UseBigDecimal.getMask();

很蛋疼啊。然后反序列化后再转成 double 就报错

java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double

@wenshao parseArray 这些方法不支持传参,是不是只能采用全局生效了

在使用parseArray的时候依然有这个问题,而且没有地方添加Feature,目前无法解决。

Was this page helpful?
0 / 5 - 0 ratings

Related issues

gongxyu picture gongxyu  ·  3Comments

wongoo picture wongoo  ·  3Comments

ITcathyh picture ITcathyh  ·  3Comments

joviqiao picture joviqiao  ·  3Comments

yemengsky picture yemengsky  ·  5Comments