问题描述:
服务器端返回一个json字符串,里面有一个长整形(如1536061697),当采用Gson的fromJson函数解析之后,却变成了科学记数法形式(1.536061697E9)。
原始代码:
String json = "{\"time\":1536061697,\"name\":\"test\"}";Map<String, Object> map = gson.fromJson(json, Map.class);String timeStr = map.get("time").toString();
解决方案:
String json = "{\"time\":1536061697,\"name\":\"test\"}";Map<String, String> map= gson.fromJson(json, new TypeToken<Map<String, String>>(){}.getType());String timeStr = map.get("time");
花絮:
1.初期遇到此问题时,我判断时Gson处理长整形数的转化存在问题,因为曾使用过FastJson,所以直接换用了FastJson,采用了JSON.parseObject(map, Map.class)函数进行解析。
2.不过后来其他同事提出,这种方式不好,因为一个小问题,引入一个库,会导致包增大,方法数增多,所以就采用了上面这种方案。