JsonReader
读者的相应方法之后是“只需为读者实例调用此方法一次”的规则。是否有任何标准工具从流中读取直到它结束?
答案 0 :(得分:0)
您可以围绕同一JsonReader
/ InputStream
重复构建多个Reader
。只要你不在流上做任何其他事情,并且只要解析器没有提前读取,每个连续的解析器应该从最后一个离开的地方开始。请注意,它是否可以预读是未定义的,可能是特定于实现的。另请注意,解析器实现通常会关闭它们所提供的流/读取器,您可能需要通过使用阻塞关闭的简单流/读取器包装来抑制它,如下所示:
Json.createReader(new NoCloseInputStream(myInputStream));
否则,请尝试使用其他解析器。我有一个FOSS JSON parser可以在我的网站上读取一些谨慎的对象。
此外,没关系;如果JsonReader
的文档说read()
方法 需要 只能调用一次;它并没有说 必须 只能被调用一次,因此值得尝试反复调用read()
以确定它是否有效。IllegalStateException
,read
,readObject
或readArray
方法中的任何一个被多次调用,则会记录这些方法以抛出close
。