强制使用 TypeToken?

Der*_*ick 5 java json gson

在将列表转换为 json 时,必须使用TypeToken(如Gson文档中的建议)作为类型,如下所示 -

new Gson().toJson(dateRange, new TypeToken<List<String>>() {}.getType()); 
Run Code Online (Sandbox Code Playgroud)

对我来说,下面的代码也有效 -

new Gson().toJson(dateRange, List.class);
Run Code Online (Sandbox Code Playgroud)

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

小智 3

根据文档 -

如果您要序列化/反序列化的对象是 a ParameterizedType(即至少包含一个类型参数并且可能是一个数组),那么您必须使用 ortoJson(Object, Type)方法 fromJson(String, Type)。以下是序列化和反序列化 a 的示例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);
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助