2014-09-22 88 views
1

我使用的Windows 7有没有办法只读取Java中的JSON文件的一部分?

的NetBeans 7.4当我试图读取与以下调用一个JSON文件,

String jsonTxt = IOUtils.toString(new FileInputStream(inputFileName), "UTF-8"); 

我收到一个OutOfMemoryError异常。我检查了一下,发现该文件超过了28 GB,因此我可能无法立即将它全部读入内存。

有没有办法只读取JSON文件的一部分,以便我不会耗尽内存?在IOUtils中似乎没有合适的方法。

+2

请参阅http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json – FatalError 2014-09-22 21:18:36

+2

+1为流式json解析器。但是28GB?这很可能是您的设计问题。如果可能的话,您可能想考虑将其分解为多个文件,或者寻找其他更好的方法来存储它。 – GreyBeardedGeek 2014-09-22 21:25:35

回答

1

您无法读取JSON文件的部分内容。 JSON结构取决于它的元素和它们的嵌套级别。

大多数JSON解析库有一个输入法,它将接受InputStream(或Reader)而不是String。你应该尝试一下。请注意,如果您的映射对象结构太大,您仍然有问题。

您应该考虑查看您正在存储的内容以及为什么要使用JSON存储它。

相关问题