Gson使用中類型轉換容易出現的問題
最近在項目中使用Gson將Json串轉成Map,發現一個int或long類型字段轉換后會。
造成與其他系統聯調時造成bug。
因此,這里將Gson與FastJSON轉換做個比較
long a = 201800L;
long b = 201900L;
Map<String,Object> map = new HashMap<>();
map.put("a", a);
map.put("b", b);
Gson gson = new Gson();
String jsonString = gson.toJson(map);
System.out.println("json串:" + jsonString);
Map map1 = gson.fromJson(jsonString, new TypeToken<Map<String, Object>>() {
}.getType());
System.out.println("Gson轉換后的map:" + map1);
Map map2 = JSON.parseObject(jsonString, Map.class);
System.out.println("FastJSON轉換后的map:" + map2);
實驗結果:
json串:{"a":201800,"b":201900}
Gson轉換后的map:{a=201800.0, b=201900.0}
FastJSON轉換后的map:{a=201800, b=201900}
由此可見,在使用Gson時要注意其類型轉換上的問題