原文 :開源前哨 作者:小秋
【導語】:符合ANSI標準的C語言json庫,其設計的目的是為了更好地利用現代CPU,追求極致的效率,
簡介
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檔案,
簡單使用
只需要把yyjson.h和yyjson.c復制到你的專案中就能用了,不需要其他的配置,yyjson的開發團隊已經對gcc、clang、msvc、tcc等編譯器進行了測驗,可以放心使用,
1、讀取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);
2、寫入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);
3、追求性能和效率,是YYJSON設計出來的主要目的,下面是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,這是個比較新的專案,有興趣的同學可以持續關注,
專案原始碼及Api檔案可在原文查找
如果你也想要自學C語言,接受全面系統的指導,這里有一個交流群推薦給你,不論是小白還是進階者,在這里都能獲得成長,群內含有,學習書籍電子書資源,素材包,還有免費教學課程哦~ 點此進入
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228351.html
標籤:C
上一篇:Linux下 VS Code 安裝與 C 編程環境配置!
下一篇:深度閱讀:二叉樹操作詳解
