7

我刚刚发现了 YAJL 项目,它可以满足我的需要。

  • 从流中读取
  • 每个有效解析令牌的回调
  • 新数据到达时重新解析不完整的 json

但我更喜欢 C++。当然,如果我真的想的话,我可以使用 C++ 项目中的这个库,甚至可以编写自己的包装器,但无论如何,原生 C++ 更可取。

我查看了 JsonCPP,但看起来它无法从流中读取不完整的 json 数据。

是否有任何其他用于解析 json 流的 C++ 库?

还有一些要求:

  • 轻的。boost 或 Qt 不适合
  • 我需要一些我可以在商业闭源软件(mit、公共领域等)中自由使用的东西。
  • 支持不阻塞读取。或允许提供数据(append_incoming_data)。
4

2 回答 2

3

最近搜索了类似需求的库,实际上只有1.5个库支持这样的需求:

  1. https://github.com/kazuho/picojson

一个头库,BSD许可证,并具有如下接口:

Iter parse(value& out, const Iter& first, const Iter& last, std::string* err);

所以你可以 append_incoming_data用几行代码来创建。

  1. https://github.com/dropbox/json11 一个文件库,许可证类似BSDc++11支持,但允许解析部分来自网络的接口json需要补丁:

https://github.com/dropbox/json11/pull/55

附言

轻的。boost 或 Qt 不适合

实际上,它们不适合,因为

允许提供数据

目前两者Qt5 jsonboost property_tree不能解析一半准备就绪json

于 2016-04-30T08:06:44.310 回答
0

其他选项是

于 2021-04-12T05:45:20.440 回答