解决Gson2.0默认Int转Double问题
2018-01-11 18:46
393 查看
Gson默认Int会转成Double,但是提供了hook覆写转换方法。具体如下:
/**
* 解决gson默认将int转换为double
*
* @return
*/
public static Gson getIntGson() {
Gson gson = new GsonBuilder().
registerTypeAdapter(Double.class, new JsonSerializer<Double>() {
@Override
public JsonElement serialize(Double src, Type typeOfSrc, JsonSerializationContext context) {
if (src == src.longValue())
return new JsonPrimitive(src.longValue());
return new JsonPrimitive(src);
}
}).create();
return gson;
} 另外Gson的版本也要注意。之前用的2.0,是不支持上述覆写的,会报错:Cannot register type adapters for class java.lang.Double。原因是在2.3以上才支持。具体见Gson的Issue说明:https://github.com/google/gson/issues/378 。打不开的话,简要贴下说明:
/**
* 解决gson默认将int转换为double
*
* @return
*/
public static Gson getIntGson() {
Gson gson = new GsonBuilder().
registerTypeAdapter(Double.class, new JsonSerializer<Double>() {
@Override
public JsonElement serialize(Double src, Type typeOfSrc, JsonSerializationContext context) {
if (src == src.longValue())
return new JsonPrimitive(src.longValue());
return new JsonPrimitive(src);
}
}).create();
return gson;
} 另外Gson的版本也要注意。之前用的2.0,是不支持上述覆写的,会报错:Cannot register type adapters for class java.lang.Double。原因是在2.3以上才支持。具体见Gson的Issue说明:https://github.com/google/gson/issues/378 。打不开的话,简要贴下说明:
Fixed in 2.3 by restoring the ability to register custom serializers for primitive types.
相关文章推荐
- 解决Gson解析数据用map接收时int自动转化为double问题
- 完美解决gson将Integer默认转换成Double的问题
- 解决gson将Integer默认转换成Double的问题
- 解决gson将Integer默认转换成Double的问题
- MFC之头文件相互包含问题及解决方法 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
- c#关于int(或其他类型)的字段在对象初始化时默认初始化问题的解决方法
- Retrofit2.0 GsonResponseBodyConverter类修改,解决网络访问默认返回空对象进入onFailure的问题
- 解决 java double 减 int 型 产生的精度问题
- Gson将字符串转map时,int默认为double类型
- 解决微信小程序ios请求ssl错误问题 windows server 2008 R2默认ssl2.0 改成1.2的
- matlab数据类型转换遇到问题,及解决办法,sym,double ,vpa转换
- linux中修改mysql的默认编码(character_set_server)解决插入乱码问题
- asp.net WebAPI 问题 iisnode默认不支持PUT和DELETE的解决
- java中double类型数据加减操作精度丢失问题及解决方法
- 微信自定义菜单url默认80端口问题解决
- error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认int 错误的解决方法
- Ubuntu12.04下替换默认的jdk后eclipse无法启动问题解决
- 疑问系列 sscanf,sprintf ,double转换成int时损失问题
- Eclipse使用Maven时,修改默认中央仓库后的配置报错找不到包的问题解决
- 安卓:调用真正系统默认短信应用发短信. (含解决4.4系统环聊问题, 含调低版本apk调用高版本系统api)