您是在告诉Gson,它正在寻找字符串到对象的映射列表,这实际上是在对对象的类型做出最佳猜测。由于JSON不能区分整数和浮点字段,因此
Gson必须将数字字段默认设置为Float / Double。
Gson的基本目的是检查您要填充的对象的类型,以确定如何解析数据。如果您没有给出任何提示,它将无法很好地工作。一种选择是定义一个自定义的JsonDeserializer,但是更好的方法是不使用HashMap(并且绝对不要使用Hashtable!),而是为Gson提供有关其期望的数据类型的更多信息。
class Response { int id; int field_id; ArrayList<ArrayList<Integer>> body; // or whatever type is most apropriate}responses = new Gson() .fromJson(draft, new TypeToken<ArrayList<Response>>(){}.getType());同样,Gson的重点是将结构化数据无缝转换为结构化对象。如果您要求它创建几乎未定义的结构(如对象映射列表),那么您将击败Gson的全部观点,并可能会使用一些更简单的JSON解析器。



