简介
使用Gson过程中,在调用其Gson.toJson(Object src)
时,一直报java.lang.IllegalArgumentException
,异常代码如下:
java.lang.IllegalArgumentException: Infinity is not a valid double value as per JSON specification. To override this behavior, use GsonBuilder.serializeSpecialFloatingPointValues() method. |
查看代码得知,是由于double的值为NaN导致,实际上Json按照规范是不支持特殊的double值(NaN,Infinity,-Infinity)的。
但是坑来了,一般来说,并不会为double初始化为NaN,都是0d的。就猜测是是不是后来被设置的,在项目中,由于使用的网络数据,会调用到Json的解析,手动解析的话,为保证字段的不存在,使用的是JsonObject的optDouble(String name)
方法,这个方法代码如下:
/** |
好吧,把默认值手动设置0。 FIX.