今天尝试使用Gson,发现转Map时数值都转成了Double,百度无果后,通过查看源码,尝试可以通过自定义对象转数值策略来解决,特地记录一下;
Gson默认采取将数值转换到Double的策略ToNumberPolicy.DOUBLE,在2.8.9版本后,可以在GsonBuilder创建时通过setObjectToNumberStrategy方法自定义数值转换策略;



一个简单的转换例子如下:
private static final Gson GSON = new GsonBuilder()
.disableHtmlEscaping()
// .setObjectToNumberStrategy(ToNumberPolicy.DOUBLE)
.setObjectToNumberStrategy(in -> {
double v = in.nextDouble();
if (v % 1 == 0) {
if (Integer.MIN_VALUE <= v && v <= Integer.MAX_VALUE) {
return (int) v;
} else {
return (long) v;
}
}
return v;
})
.create();

















![[Android]修改应用包名、名称、版本号、Icon、启动页以及环境判断和打包](https://img-blog.csdnimg.cn/1265674686e0439c8a6cb0543b7b45da.png)

