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: %sn", yyjson_get_str(name));
printf("name length:%dn", (int)yyjson_get_len(name));
更多功能广大网友可以继续挖掘。
原文始发于微信公众号(开源日记):2.2k stars号称最牛X的C语言JSON解析库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/49931.html