CJsonObject基于 cJSON 的 C++ 版 JSON 庫
簡單好用的C++JSON庫CJsonObject,讓使用json如使用C++原生的結(jié)構(gòu)體那般方便,隨心所欲。
CJsonObject是個(gè)優(yōu)秀的C++JSON庫,截止2019年7月31日,CJsonObject開源一年,未經(jīng)推廣就在GitHub上獲得130多star和60多fork。CJsonObject是基于cJSON全新開發(fā)一個(gè)C++版的JSON庫,最大優(yōu)勢是輕量,簡單好用,開發(fā)效率極高。
CJsonObject只有4個(gè)文件,拷貝到自己代碼里源碼級(jí)集成即可,無須編譯成庫,且跨平臺(tái)和編譯器。與大部分json解析庫訪問多層嵌套json非常麻煩不同,CJsonObject對(duì)多層嵌套json的讀取和生成使用非常簡單。用 CJsonObject 的好處還在于完全不用專門的文檔,頭文件即文檔,看完 Demo 立刻就會(huì)用,所有函數(shù)都十分通俗易懂。
絕大部分使用JSON的場景下,易用性與開發(fā)效率才是第一位的,而不是解析性能。CJsonObject 經(jīng)過5年超過9個(gè)項(xiàng)目的生產(chǎn)環(huán)境應(yīng)用驗(yàn)證其功能穩(wěn)定性,開源后又被眾多開發(fā)者用到自己的項(xiàng)目中,絕對(duì)是個(gè)很好的選擇。
許可證:MIT
功能: JSON 解析,JSON 生成
平臺(tái): 標(biāo)準(zhǔn) C/C++ 開發(fā),跨平臺(tái)
使用說明:將 CJsonObject.hpp、CJsonObject.cpp、cJSON.h、cJSON.c 四個(gè)文件加入代碼目錄,與用戶自己的代碼一起編譯即可。
示例代碼:
#include #include #include "../CJsonObject.hpp"
int main()
{
int iValue;
std::string strValue;
neb::CJsonObject oJson("{\"refresh_interval\":60,"
"\"dynamic_loading\":["
"{"
"\"so_path\":\"plugins/User.so\", \"load\":false, \"version\":1,"
"\"cmd\":["
"{\"cmd\":2001, \"class\":\"neb::CmdUserLogin\"},"
"{\"cmd\":2003, \"class\":\"neb::CmdUserLogout\"}"
"],"
"\"module\":["
"{\"path\":\"im/user/login\", \"class\":\"neb::ModuleLogin\"},"
"{\"path\":\"im/user/logout\", \"class\":\"neb::ModuleLogout\"}"
"]"
"},"
"{"
"\"so_path\":\"plugins/ChatMsg.so\", \"load\":false, \"version\":1,"
"\"cmd\":["
"{\"cmd\":2001, \"class\":\"neb::CmdChat\"}"
"],"
"\"module\":[]"
"}"
"]"
"}");
std::cout << oJson.ToString() << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
std::cout << oJson["dynamic_loading"][0]["cmd"][1]("class") << std::endl;
oJson["dynamic_loading"][0]["cmd"][0].Get("cmd", iValue);
std::cout << "iValue = " << iValue << std::endl;
oJson["dynamic_loading"][0]["module"][0].Get("path", strValue);
std::cout << "strValue = " << strValue << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
oJson.AddEmptySubObject("depend");
oJson["depend"].Add("nebula", "https://github.com/Bwar/Nebula");
oJson["depend"].AddEmptySubArray("bootstrap");
oJson["depend"]["bootstrap"].Add("BEACON");
oJson["depend"]["bootstrap"].Add("LOGIC");
oJson["depend"]["bootstrap"].Add("LOGGER");
oJson["depend"]["bootstrap"].Add("INTERFACE");
oJson["depend"]["bootstrap"].Add("ACCESS");
std::cout << oJson.ToString() << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
std::cout << oJson.ToFormattedString() << std::endl;
}