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

2023-03-10 14:24:22 浏览数 (1)

ANSI C 编写的高性能 JSON 解析库。

特点

  • 快速:可以在现代 CPU 上每秒读取或写入千兆字节的 JSON 数据。
  • 便携:符合 ANSI C (C89)。
  • 标准:严格遵守[RFC 8259]标准。
  • 安全:完整的 JSON 表单、数字格式和 UTF-8 验证。
  • 准确:能读写int64,数字准确uint64double
  • 更少的限制:支持无限制的 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));

更多功能广大网友可以继续挖掘。

0 人点赞