2012-05-18 30 views
0

我有一個InputStreamReader(連接到套接字),它將接收多個JSON文檔數據。例如,將具有如何從Java中的單個流中不斷解析多個JSON數據?

{ "name" : "foo" } 

和,一些倍後(無連接閉合)時,流將具有另一JSON數據,

{ "name" : "bar" } 

我想在我的處理循環中用json-simple或json-smart解析它,不管。無論如何要做到這一點?

我喜歡有一個JSON解析器(從流中輸入數據),如果它沒有從流接收數據,解析器可以阻塞更多的數據,如果它接收到完整的JSON數據(可能有一些方法),它可以連續解析下一個JSON數據。

實際上,我嘗試了json-simple和json-smart但沒有成功。

任何幫助或建議,將不勝感激。

謝謝。

回答

0

如果我正確地理解了這個問題,那麼問題是從一批JSON對象(不斷通過輸入流)中解析一個完整的JSON對象。

所以,如果有可能檢測到已收到完整的JSON對象,我們可以解析該對象。

爲了檢測所接收的JSON對象(String)是完整的,有效的,我們可以保持的{Stack,並} 。對於我們收到的每一個{,我們都可以將其推送到Stack,並且對於每個},我們可以從Stack中刪除{。如果我們有Stack空(不是第一次),我們可以得出結論,有一個完整的JSON對象。然後我們可以繼續解析。


- 不知道有關的JSON括號結構(?是不是平衡),未探JSON形成深深的早期:(

+0

如果任何JSON字符串值包含無法比擬的。括號?如果我編寫代碼來做到這一點,它看起來像JSON解析在我的代碼和JSON解析器的重複。:( – cinsk

+0

:(。然後從字符串值創建一個'JSON'對象沒有得到一個異常可以告訴我們有關的有效性。 – Rupak