2014-09-22 65 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存儲它。

相關問題