2011-06-05 19 views
4

任何人都可以推薦一個適用於Java的JSON庫,它允許我在進入時以非阻塞的方式爲它提供大塊數據?我已閱讀A better Java JSON library和類似的問題,並沒有找到我想要的。用於Java的增量流式JSON庫

從本質上講,我想是一個圖書館,讓我這樣做如下:

String jsonString1 = "{ \"A broken"; 
String jsonString2 = " json object\" : true }"; 

JSONParser p = new JSONParser(...); 
p.parse(jsonString1); 
p.isComplete(); // returns false 
p.parse(jsonString2); 
p.isComplete(); // returns true 
Object o = p.getResult(); 

注意實際的鍵名(「破碎的JSON對象」)是件之間的分裂。

我發現的最接近的是這async-json-library這確實幾乎想正是我,但它不能恢復那裏實際的字符串或其它數據值片之間分割的對象。

回答

2

有幾個攔截流/ incemental JSON解析器(根據Is there a streaming API for JSON?);但對於我所知道的異步還沒有。 你提到的lib似乎很糟糕的命名;它似乎沒有做真正的異步處理,但只是允許一個人解析JSON文檔的序列(其他多個庫也允許這樣做)

如果有人真的想要這個,寫一個並不是不可能 - 對於XML,有Aalto,處理JSON比XML更簡單。 對於它的價值,實際上this feature requestJackson添加了非阻塞解析模式;但很少有用戶表示有興趣完成這項工作(通過對功能請求進行投票)。

編輯:(2016-01),而不是異步,傑克遜ObjectMapper允許通過子樹中的流的部分的結合便利子樹以及 - 見ObjectReader.readValues()ObjectReaderObjectMapper創建的),或短切版本ObjectMapper.readValues(...)。請注意那裏的尾部s,這意味着一串對象,而不僅僅是一個對象。