谁能推荐一个用于 Java 的 JSON 库,它允许我以非阻塞的方式在数据 block 传入时向其提供数据 block ?我已通读 A better Java JSON library和类似的问题,但还没有找到我想要的。
本质上,我想要的是一个允许我执行以下操作的库:
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这几乎完全符合我的要求,除了它无法恢复实际字符串或其他数据值被分割成两部分的对象。
最佳答案
有一些阻塞流式/incemental JSON 解析器(根据 Is there a streaming API for JSON? );但对于异步,我还没有意识到。 您提到的库似乎命名不当;它似乎并没有进行真正的异步处理,而只是允许一个人解析 JSON 文档序列(其他多个库也允许这样做)
如果有人真的想要这个,写一个也不是不可能的——对于 XML 有 Aalto ,并且处理 JSON 比 XML 简单得多。 对于它的值(value),实际上有 this feature request为 Jackson 添加非阻塞解析模式;但很少有用户表示有兴趣完成这项工作(通过投票支持功能请求)。
编辑:(2016 年 1 月)虽然不是异步的,但 Jackson ObjectMapper 也允许通过部分流的子树绑定(bind)方便地创建子树——参见 ObjectReader.readValues()
( ObjectReader
从 ObjectMapper
创建)或 ObjectMapper.readValues(...)
的快捷版本。请注意其中的尾随 s
,这意味着对象流,而不仅仅是一个对象。
关于java - 用于 Java 的增量流式 JSON 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241159/