首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2.2k stars号称最牛X的C语言JSON解析库

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

作者头像
开源日记
发布2023-03-10 14:24:22
发布2023-03-10 14:24:22
1.2K0
举报
文章被收录于专栏:JVMGCJVMGC

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: %s\n", yyjson_get_str(name));
printf("name length:%d\n", (int)yyjson_get_len(name));

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GitHub数据
  • 测试表现
  • 示例代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档