侧边栏壁纸
博主头像
钱学超博主等级

火星人,1万小时法则的忠实拥趸。技术宅,象棋和羽毛球爱好者,马拉松PB成绩:4小时零8分。坚持认为算法是计算机的灵魂。喜欢解决问题,喜欢手工,喜欢与朋友们聊天喝酒吹牛X。

  • 累计撰写 81 篇文章
  • 累计创建 447 个标签
  • 累计收到 87 条评论
标签搜索

目 录CONTENT

文章目录

Gson处理int值转化对象是Object的情况下,会将int转化为double的问题解决

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

评论区