java - 用于 Java 的增量流式 JSON 库

标签 java json serialization streaming nonblocking

谁能推荐一个用于 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 requestJackson 添加非阻塞解析模式;但很少有用户表示有兴趣完成这项工作(通过投票支持功能请求)。

编辑:(2016 年 1 月)虽然不是异步的,但 Jackson ObjectMapper 也允许通过部分流的子树绑定(bind)方便地创建子树——参见 ObjectReader.readValues()( ObjectReaderObjectMapper 创建)或 ObjectMapper.readValues(...) 的快捷版本。请注意其中的尾随 s,这意味着对象流,而不仅仅是一个对象。

关于java - 用于 Java 的增量流式 JSON 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241159/

相关文章:

java - Oracle weblogic 12.1.2直接部署domain文件夹时出现ClassCastException

java - Spring MVC 3 : return a Spring-Data Page as JSON

jquery - Bower.json : main is present but I get a "(...) is missing "main"entry in bower. json“警告

java - 如何使用 Jackson 对象映射器将 Java 对象中的并非所有属性转换为 json

javascript - JS 循环遍历 json 对象

json - 无法从来自 ElasticSearch 的 JSON 反序列化 LifeRay 服务模型对象,未找到默认构造函数

c++ - 将 8 个 bool 值保存到 1 个字节中

java - CardView 滑动操作 - Material - Android Java

java - Hadoop 中的线程

serialization - Spark Parallelize? (找不到名称为 'id'的创建者属性)