防止 Gson 将整数(Integer)表示为浮点数(Float)
1、简介 在将 Java 对象序列化和反序列化为 JSON 格式或从 JSON 格式反序列化 Java 对象时,Google 开发的 Gson 库是一个不错的选择。但是,在序列化对象时,我们通常会遇到 Gson 将整数显示为浮点数的问题。
本文将带你了解为什么在 Gson 的设计中整数被视为浮点数?以及如何解决这个问题。
2、问题的定义 Gson 可将 Java 对象序列化为 JSON。默认情况下,Gson 会将整数序列化为浮点数,以获得更精确的表示。下面是一个简单的例子:
public String jsonString= "[{\"id\":4077395,\"field_id\":242566,\"body\":\"\"}, " + "{\"id\":4077398,\"field_id\":242569,\"body\":[[273019,0],[273020,1],[273021,0]]}, " + "{\"id\":4077399,\"field_id\":242570,\"body\":[[273022,0],[273023,1],[273024,0]]}]"; 如上,我们声明了一个名为 jsonString 的 JSON 字符串,它代表一个对象数组。这个 JSON 数组有不同的字段,如 id、field_id 和 body。
现在,我们使用 Gson 库将 JSON 字符串反序列化为 Hashtable<String, Object> 对象列表。
ArrayList<Hashtable<String, Object>> responses; Type ResponseList = new TypeToken<ArrayList<Hashtable<String, Object>>>() {}.getType(); responses = new Gson().fromJson(jsonString, ResponseList); 如上,我们声明了一个名为 responses 的 ArrayList,其中包含 Key 为字符串、Value 为对象的 Hashtable 类型元素。此外,我们还利用 Gson 库将 jsonString 反序列化为 Hashtables 列表。