如何从Java中的文件中读取许多json对象?

时间:2014-06-25 20:07:28

标签: java json jsonreader

JsonReader读者的相应方法之后是“只需为读者实例调用此方法一次”的规则。是否有任何标准工具从流中读取直到它结束?

1 个答案:

答案 0 :(得分:0)

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

Json.createReader(new NoCloseInputStream(myInputStream));

否则,请尝试使用其他解析器。我有一个FOSS JSON parser可以在我的网站上读取一些谨慎的对象。

此外,JsonReader的文档说read()方法 需要 只能调用一次;它并没有说 必须 只能被调用一次,因此值得尝试反复调用read()以确定它是否有效。没关系;如果IllegalStateExceptionreadreadObjectreadArray方法中的任何一个被多次调用,则会记录这些方法以抛出close