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 |
示例代码
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: %s\n", yyjson_get_str(name));
printf("name length:%d\n", (int)yyjson_get_len(name));
更多功能广大网友可以继续挖掘。
文章转载自开源日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




