GSON:fromJson(Reader json,Type typeOfT)vs fromJson(String json,Type typeOfT)

时间:2015-05-05 19:10:53

标签: java android json gson

我正在使用代码库,该代码库接收网络响应的主体并将其提供给fromJson(Reader json, Type typeOfT)的GSON实例以创建POJO。

通常我会看到fromJson(String json, Type typeOfT)的来电,但他们坚持认为使用Reader来电更好。

使用StringReader之间有什么区别?它会产生多大的差异?

1 个答案:

答案 0 :(得分:2)

Reader是一个用于读取字符流的类。因此,当解析器使用它时,它会逐一从Reader中获取每个字符并逐渐解析输入。

使用String强制您在解析之前将所有json存储到其中。如果你有一个庞大的结构要解析,这可能不是最好的方法。

此外,如果您从Reader中读取的请求获得响应,它允许您直接解析响应,而不是读取所有流以将其构建为String,然后将此String提供给解析器。

因此,如果您在字符串中直接使用json,请使用fromJson(String s, ...),否则请使用fromJson(Reader r, ...)

对于一个实际示例,假设您有一个要解析的巨大json文件,但第一行有语法错误。将其所有内容读入一个String然后解析它以查看第一行是否存在错误显然效率低下。 如果您使用的是FileReader,那么您只需阅读第一行即可看到这是一个格式错误的json。