3

我已经看到了许多用于在 C 中解析 JSON 的库,但它们都不能直接从文件流中读取和解析。所有此类库(例如 Yajl、cjson)的问题在于,如果文件中的 json 文档很大,那么您必须首先将所有这些内容读入内存缓冲区,然后运行这些库提供的 API 来解析它。

API 通常看起来像

cJSON *cJSON_Parse(const char *value)

它将 char* 带到缓冲区。

我想避免这种情况,因为我的文件可能非常大,而且我事先不知道文件的大小。此外,这些库维护对实际缓冲区中的对象、数组的引用以检索值,因此我无法释放原始缓冲区。

是否有可以直接从文件流中读取和解析的 JSON 解析库?

4

2 回答 2

3

http://lloyd.github.com/yajl/可能是您正在寻找的

于 2012-10-05T07:13:23.873 回答
1

使用mmap()将文件映射到进程,然后简单地使用返回的地址来执行char*操作,这使得它们都很有用,并且是解决问题的好方法

于 2012-10-05T10:38:30.180 回答