我正在使用代码库,该代码库接收网络响应的主体并将其提供给fromJson(Reader json, Type typeOfT)
的GSON实例以创建POJO。
通常我会看到fromJson(String json, Type typeOfT)
的来电,但他们坚持认为使用Reader
来电更好。
使用String
与Reader
之间有什么区别?它会产生多大的差异?
答案 0 :(得分:2)
Reader
是一个用于读取字符流的类。因此,当解析器使用它时,它会逐一从Reader中获取每个字符并逐渐解析输入。
使用String强制您在解析之前将所有json存储到其中。如果你有一个庞大的结构要解析,这可能不是最好的方法。
此外,如果您从Reader中读取的请求获得响应,它允许您直接解析响应,而不是读取所有流以将其构建为String,然后将此String提供给解析器。
因此,如果您在字符串中直接使用json,请使用fromJson(String s, ...)
,否则请使用fromJson(Reader r, ...)
对于一个实际示例,假设您有一个要解析的巨大json文件,但第一行有语法错误。将其所有内容读入一个String然后解析它以查看第一行是否存在错误显然效率低下。
如果您使用的是FileReader
,那么您只需阅读第一行即可看到这是一个格式错误的json。