美文网首页
Gson默认将integer转为double

Gson默认将integer转为double

作者: on_i_on | 来源:发表于2020-01-14 11:17 被阅读0次

    在日常开发中我们常需要将json串与map进行相互转化,但是会出现int变成了doouble。

    我遇到的场景

    后端返回数据,经过gson解析之后long类型变成了double,之所以会发生这样的情况,是因为在javascript中20和20.0其实是相等的,都是number类型,即javascript中没有整数类型一说。

      BaseResponse jsonResponse = GsonConvertUtil.fromJson(jsonReader, type);
    
      {"status":200,"code":0,"message":"success","data":[{"id":1.0,"name":"账户安全"},{"id":2.0,"name":"新手教程"},          
      {"id":3.0,"name":"币币交易"},{"id":4.0,"name":"法币交易"}]}
    

    这种情况我们只需要将创建Gson的方式改一下即可:

    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());
                } else {
                    return new JsonPrimitive(src);
                }
            }
        }).create();
    

    即如果是Double类型的,判断一下它和它的longValue是否相等,如果相等则说明小数位是补了一个".0",那么我们就返回src.longValue,否则直接返回Double src。

    相关文章

      网友评论

          本文标题:Gson默认将integer转为double

          本文链接:https://www.haomeiwen.com/subject/vfwoactx.html