2016-05-23 52 views
1

我使用Gson處理巨大的 Json文件包含多個Json根元素。 喜歡:Gson處理多個json根元素

{"a": 1}     
{"a": 2}   
{"a": 3} 

沒有單獨的逗號那些根元件之間。

我知道它不是一個有效的格式,我無法控制這個文件的格式,但我們可以編輯文件,如果有必要。

目前我的解決方案是逐行讀取文件並逐個解析它們。但我認爲這不是每個效率。

另一種解決方案是編輯文件並更改所有根元素,以便它們位於Json數組中。但是,我認爲這不是一個好方法。我的文件很大。

有人可以幫助我嗎?如果有其他包可以解決這個問題。我很高興切換到。 謝謝

+0

當你陳述巨大......你是否想要1000單位?千位? 1萬億兆字節?據我所知,在Android設備中可以使用高達80兆字節的JSON(速度有所減慢,但AsynkTasks可以完成這項工作),並且Windows Server IIS中的500兆字節以可接受的速度運行。 – Bonatti

+0

嗨@Bonatti謝謝你的回覆。該文件實際上是2GB。我需要對這些數據進行一些預處理。 –

+0

如果有一個時間窗口供您處理,我強烈建議以較小的數據塊將數據分解並分解。一個例子是在較小的「輸出」中打破文件,每個文件包含一個較小的分組(比如1〜1000個元素),然後運行該數據的JSON/Gson消耗。 – Bonatti

回答

0

編寫一個FilterInputStream實現插入頂級數組聲明並插入逗號。然後你可以把它傳給GSON來解析。

如果文件真的很大,並且您不能在存儲器中保存最終的大結構,您可以編寫FilterInputStream將輸入分解爲更小但仍然有效的頂層塊。

在這裏的可能性是無止境的,但我認爲某種FilterInputStream將是一個很好的解決方案。

+0

嗨,吉姆我認爲這種方法值得嘗試,謝謝你的建議。 –