2011-06-05 20 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,这意味着一串对象,而不仅仅是一个对象。