暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

2.2k stars号称最牛X的C语言JSON解析库

开源日记 2022-08-21
835

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.jsonparse (GB/s)stringify (GB/s)
yyjson(insitu)1.801.51
yyjson1.721.42
simdjson1.520.61
sajson1.16
rapidjson(insitu)0.77
rapidjson(utf8)0.260.39
cjson0.320.17
jansson0.050.11
twitter.jsonparse (GB/s)stringify (GB/s)
yyjson(insitu)3.512.41
yyjson2.392.01
simdjson2.190.80
sajson1.74
rapidjson(insitu)0.75
rapidjson(utf8)0.300.58
cjson0.480.33
jansson0.090.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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论