ANSI C 编写的高性能 JSON 解析库。
特点
- 快速:可以在现代 CPU 上每秒读取或写入千兆字节的 JSON 数据。
- 便携:符合 ANSI C (C89)。
- 标准:严格遵守[RFC 8259]标准。
- 安全:完整的 JSON 表单、数字格式和 UTF-8 验证。
- 准确:能读写
int64
,数字准确uint64
。double
- 更少的限制:支持无限制的 JSON 级别
u0000
和非空终止字符串。 - 可扩展:允许注释、尾随逗号、nan/inf、自定义内存分配器的选项。
- 开发者友好:只有一个
h
文件c
,易于集成。
GitHub数据
- 2.2k stars
- 51 watching
- 195 forks
开源地址:https://github.com/ibireme/yyjson
测试表现
twitter.json | parse (GB/s) | stringify (GB/s) |
---|---|---|
yyjson(insitu) | 1.80 | 1.51 |
yyjson | 1.72 | 1.42 |
simdjson | 1.52 | 0.61 |
sajson | 1.16 | |
rapidjson(insitu) | 0.77 | |
rapidjson(utf8) | 0.26 | 0.39 |
cjson | 0.32 | 0.17 |
jansson | 0.05 | 0.11 |
twitter.json | parse (GB/s) | stringify (GB/s) |
---|---|---|
yyjson(insitu) | 3.51 | 2.41 |
yyjson | 2.39 | 2.01 |
simdjson | 2.19 | 0.80 |
sajson | 1.74 | |
rapidjson(insitu) | 0.75 | |
rapidjson(utf8) | 0.30 | 0.58 |
cjson | 0.48 | 0.33 |
jansson | 0.09 | 0.24 |
示例代码
代码语言:javascript复制const char *json = "{"name":"Mash","star":4,"hits":[2,2,1,3]}";
// Read JSON and get root
yyjson_doc *doc = yyjson_read(json, strlen(json), 0);
yyjson_val *root = yyjson_doc_get_root(doc);
// Get root["name"]
yyjson_val *name = yyjson_obj_get(root, "name");
printf("name: %sn", yyjson_get_str(name));
printf("name length:%dn", (int)yyjson_get_len(name));
更多功能广大网友可以继续挖掘。