0

reader对应的方法JsonReader遵循“对于一个 reader 实例,该方法只需要调用一次”的规则。是否有任何标准工具可以从流中读取直到它结束?

4

1 回答 1

0

您可能能够JsonReader在同一个InputStream/周围重复构建多个 s Reader。只要您不在流上做任何其他事情并且只要解析器没有提前读取,每个后续的解析器都应该从最后一个停止的地方开始。请注意,它是否可以提前读取是未定义的,并且可能是特定于实现的。另请注意,解析器实现通常会关闭给定的流/读取器,您可能需要使用阻塞关闭的简单流/读取器包装器来抑制这种情况,如下所示:

Json.createReader(new NoCloseInputStream(myInputStream));

否则,请尝试不同的解析器。我有一个FOSS JSON 解析器,可以读取我网站上的离散对象流。

此外,文档JsonReader说该read()方法只需要调用一次;它并没有说它只能调用一次,因此值得尝试read()反复调用以查看它是否有效。没关系; 如果多次调用 、 或 方法中的任何IllegalStateException一个,这些方法被记录为抛出一个。readreadObjectreadArrayclose

于 2014-06-25T20:58:33.417 回答