最快的 C 语言 JSON 库,比之前的simdjson更快!!!

简介

YYJSON是一个使用C语言开发的高性能json库,能够更好地利用现代CPU的性能,从而使得JSON的序列化和反序列化都更快。YYJSON具有以下特点:

1.更快。在现代CPU上,能以每秒千兆级别的速度读取和写入json数据。

2.可移植。兼容ANSI C(C89)标准。

3.符合RFC 8259和ECMA-404标准。

4.完整的JSON格式、数字格式和UTF-8验证。

5.可以精确处理int64,uint64和double类型的数据。

6.支持超大数据的JSON读写。

7.支持注释、尾部逗号、nan/inf,自定义内存分配器。

支持注释,是指能读取写入类似以下的JSON字符串:

{
    "name": "Harry", // single line comment
    "id": /* multiple line comment */ 123
}

支持尾部逗号,是指能读取写入类似以下的JSON字符串:

{
    "a": 1,
    "b": 2,
}

[
    "a",
    "b",
]

支持nan/inf,是指能读取写入类似以下的JSON字符串:

{
    "large": 123e999,
    "nan1": NaN,
    "nan2": nan,
    "inf1:" Inf,
    "inf2": -Infinity
}

8.易用,只需要引入一个h文件和一个c文件。

简单使用

项目源码:

https://github.com/ibireme/yyjson

Api文档:

https://github.com/ibireme/yyjson/blob/master/doc/API.md

只需要把yyjson.h和yyjson.c复制到你的项目中就能用了,不需要其他的配置,yyjson的开发团队已经对gcc、clang、msvc、tcc等编译器进行了测试,可以放心使用。

读取JSON字符串:

const char *json = "{\"name\":\"Mash\",\"star\":4,\"hits\":[2,2,1,3]}";
yyjson_doc *doc = yyjson_read(json, strlen(json), 0);
yyjson_val *root = yyjson_doc_get_root(doc);
yyjson_val *name = yyjson_obj_get(root, "name");
printf("name: %s\n", yyjson_get_str(name));
yyjson_val *star = yyjson_obj_get(root, "star");
printf("star: %d\n", (int)yyjson_get_int(star));
yyjson_val *hits = yyjson_obj_get(root, "hits");
size_t idx, max;
yyjson_val *hit;
yyjson_arr_foreach(hits, idx, max, hit) {
    printf("hit%d: %d\n", (int)idx, (int)yyjson_get_int(hit));
}
yyjson_doc_free(doc);

写入JSON字符串

yyjson_mut_doc *doc = yyjson_mut_doc_new(NULL);
yyjson_mut_val *root = yyjson_mut_obj(doc);
yyjson_mut_doc_set_root(doc, root);
yyjson_mut_obj_add_str(doc, root, "name", "Mash");
yyjson_mut_obj_add_int(doc, root, "star", 4);
int hits_arr[] = {2, 2, 1, 3};
yyjson_mut_val *hits = yyjson_mut_arr_with_sint32(doc, hits_arr, 4);
yyjson_mut_obj_add_val(doc, root, "hits", hits);
const char *json = yyjson_mut_write(doc, 0, NULL);
if (json) {
    printf("json: %s\n", json); // {"name":"Mash","star":4,"hits":[2,2,1,3]}
    free((void *)json);
}
yyjson_mut_doc_free(doc);

追求性能和效率

下面是YYJSON在不同环境下与其他几个JSON库的性能比较,可以看得出来YYJSON在这方面确实是要略胜一筹:

Intel Core i5-8259U (3.8GHz) with Clang 10

在这里插入图片描述
在这里插入图片描述

Apple A12 (2.5GHz) with Clang 12

在这里插入图片描述

在这里插入图片描述

YYJSON 自称“最快的 C 语言 JSON 库”,在 GitHub 上架刚一个多月,已有 1.2k Star

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ztenv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值