每天学习一点点,成功增加一大步

解决 gson 将 Integer 默认转换成 Double 的问题

Android zhanghui 102℃

昨天在写 android 的一个项目时,遇到字符型的 JSON 数据中整形的数字竟然被 gson 转换成了带有小数点的 doubile 的奇葩现象。虽然问题已经解决但还是有需要记录下来。

在之前有记录过利用 gson 解决过对象型的 JSON 与字符型的JSON 之间的转换。

使用Gson和GsonFormat解析复杂Json

https://blog.pkcms.cn/archives/1427

但问题出来了呢就还是要去解决,那么问题的现象是这样的,例如,原本的字符型的 JSON 数据是:

{"id":20,"name":"test"}

在经过 gson 转换后会变成了

{"id":20.0,"name":"test"}

想要解决这个问题的方法是:

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();

以上的解决代码的逻辑是:如果这个数据是Double类型的,判断一下它和它的longValue是否相等,如果相等则说明小数位是补了一个”.0″,那么我们就返回src.longValue,否则直接返回Double src。

以上这篇完美解决gson将Integer默认转换成Double的问题了。

转载请注明:隨習筆記 » 解决 gson 将 Integer 默认转换成 Double 的问题

喜欢 (0)