簡體   English   中英

用於 Java 的增量流 JSON 庫

[英]Incremental streaming JSON library for Java

任何人都可以為 Java 推薦一個 JSON 庫,它允許我在它們進入時以非阻塞方式為其提供數據塊? 我已經閱讀了更好的 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 ,它幾乎完全符合我的要求,除了它無法恢復實際字符串或其他數據值在片段之間分割的對象。

有一些阻塞流/增量 JSON 解析器(根據Is there a streaming API for JSON? ); 但是對於我所知道的異步還沒有。 您所指的 lib 名稱似乎很糟糕; 它似乎沒有進行真正的異步處理,而只是允許解析 JSON 文檔的序列(其他多個庫也允許這樣做)

如果有人真的想要這個,寫一個也不是不可能的——對於 XML 有Aalto ,處理 JSON 比 XML 簡單得多。 值得一提的是,實際上有這個功能請求Jackson添加非阻塞解析模式; 但很少有用戶表示有興趣完成這項工作(通過投票支持功能請求)。

編輯:(2016-01)雖然不是異步的,但 Jackson ObjectMapper 還允許通過子樹對 stream 的部分進行方便的子樹綁定 - 請參見ObjectReader.readValues() (從ObjectMapper創建的ObjectReader ),或ObjectMapper.readValues(...)的版本。 請注意其中的尾隨s ,這意味着 stream 對象,而不僅僅是一個對象。

Google Gson 可以從 InputStream https://sites.google.com/site/gson/streaming增量解析 Json

我寫了這樣一個解析器: JsonParser.java 查看如何使用它的示例: JsonParserTest.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM