TypeToken使用必须吗?

时间:2018-02-02 10:33:22

标签: java json gson

在将列表转换为json时,必须使用TypeToken(如Gson doc中所推荐的那样)作为类型 -

new Gson().toJson(dateRange, new TypeToken<List<String>>() {}.getType()); 

对我而言,下面的代码也在运行 -

new Gson().toJson(dateRange, List.class);

只是想确保代码不会中断。

1 个答案:

答案 0 :(得分:2)

根据文档 -

  

如果您正在序列化/反序列化的对象是   ParameterizedType(即包含至少一个类型参数并且可以   是一个数组)然后你必须使用toJson(Object, Type)或   fromJson(String, Type)方法。这是一个序列化和示例   反序列化ParameterizedType

 Type listType = new TypeToken<List<String>>() {}.getType();
 List<String> target = new LinkedList<String>();
 target.add("blah");

 Gson gson = new Gson();
 String json = gson.toJson(target, listType);
 List<String> target2 = gson.fromJson(json, listType);

这是特例,在其他情况下,您可以直接使用类类型。 供参考 - http://google.github.io/gson/apidocs/com/google/gson/Gson.html

希望这有帮助