- 遇到了这个问题,将一个json字符串转化为一个hashmap的时候,发现int值全都变成double了。
- 于是网上查询了一遍,发现大部分都是要求修改源代码,或者是设置基于ObjectTypeAdapter对象的重写的。
- 实战了一下,发现都不行。解决不了这个问题。
- 没办法,读一下源代码吧。
- 发现google已经升级了组件的处理方式。开始使用不同策略了。
- 我的版本号
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
- 已经发现了问题所在,就是只要修改一下转化为数字时的策略,就可以达到效果了。
- 原计划想使用ObjectTypeAdapter.getFactory()方法,确实有点费劲,而且还是需要进行注册。
- 再想,既然google已经考虑到了这个问题,那么就应该有个简单一点的方法,直接设置这个策略吧。
- 查文档自然是可以,但是那不费劲么
- new GsonBuilder(). 点一下,发现了这么个方法:setObjectToNumberStrategy
- 嗯嗯,就是他了!
- 其实这样就可以了。不过我还是有点强迫症。long和int还是有点不一样啊。
- 所以,自己再写一个策略就好了吧。
- 照抄!
- 看看,效果是不是很好!又简单,又方便!
- 哎,网上的文章太多了。全都是重复重复再重复,也没人验证对错真假,也没有人说明白环境、版本号。哎,质量堪忧啊。
- 好了就这么多废话。
评论区