Gson解决数字默认转为double以及时间类型format问题

问题1:

日期类型格式化问题

只需要.setDateFormat("yyyy-MM-dd HH:mm:ss")即可

 Gson gson = new GsonBuilder()
                .setDateFormat("yyyy-MM-dd HH:mm:ss")
                .create();

问题2:

        String json="{\"code\":2,\"sds\":2.1}"; 
        Gson gson = new GsonBuilder()
                .create();
        System.out.println(gson.fromJson(json, Map.class));

打印{code=2.0, sds=2.1}

原因

当json字符串转为Map这种不确定的对象时,gson会默认数字类型转为浮点型

解决方法

方法1

自己创建对应类型的对象,并在创建属性时就觉得了对应字段的类型

方法2

使用2.8.9版本的gson

        
            com.google.code.gson
            gson
            2.8.9
        
        String json="{\"code\":2,\"sds\":2.1}";

        Gson gson = new GsonBuilder()
                .setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
                .setDateFormat("yyyy-MM-dd HH:mm:ss")
                .create();
        System.out.println(gson.fromJson(json, Map.class));

打印{code=2, sds=2.1}

你可能感兴趣的:(java)