用于Java的增量流式JSON库

任何人都可以推荐一个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(); 

请注意,实际的键名称(“A broken json object”)在各段之间分开。

我发现的最接近的是async-json-library , 几乎完全符合我的要求,除了它无法恢复实际字符串或其他数据值在片段之间分割的对象。

有一些阻塞流/ incemental JSON解析器(根据是否有JSON的流API? ); 但是对于异步我还没有意识到。 你引用的lib看起来很糟糕; 它似乎没有进行真正的异步处理,而只是允许一个解析JSON文档的序列(其他多个库也允许这样做)

如果有人真的想要这个,写一个并不是不可能的 – 因为XML有Aalto ,处理JSON比XML简单得多。 对于它的价值,实际上有这个function请求为Jackson添加非阻塞解析模式; 但很少有用户表示有兴趣完成这项工作(通过投票支持function请求)。

编辑:(2016-01)虽然不是异步,但Jackson ObjectMap也允许通过子树的子树绑定方便的子树 – 参见ObjectReader.readValues() (从ObjectMapper创建的ObjectReader )或快捷方式ObjectMapper.readValues(...)版本。 注意那里的尾随s ,它意味着一个对象流,而不仅仅是一个对象流。

我写了这样一个解析器: JsonParser.java 。 请参阅示例如何使用它: JsonParserTest.java 。