添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


问题描述:

服务器端返回一个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.不过后来其他同事提出,这种方式不好,因为一个小问题,引入一个库,会导致包增大,方法数增多,所以就采用了上面这种方案。