CJsonObject - 基于 cJSON 的 C++ 版 JSON 库
MIT
跨平台
C/C++
软件简介
简单好用的CJSON库CJsonObject,让使用json如使用C原生的结构体那般方便,随心所欲。
CJsonObject是个优秀的CJSON库,截止2019年7月31日,CJsonObject开源一年,未经推广就在GitHub上获得130多star和60多fork。CJsonObject是基于cJSON全新开发一个C版的JSON库,最大优势是轻量,简单好用,开发效率极高。
CJsonObject只有4个文件,拷贝到自己代码里源码级集成即可,无须编译成库,且跨平台和编译器。与大部分json解析库访问多层嵌套json非常麻烦不同,CJsonObject对多层嵌套json的读取和生成使用非常简单。用
CJsonObject 的好处还在于完全不用专门的文档,头文件即文档,看完 Demo 立刻就会用,所有函数都十分通俗易懂。
绝大部分使用JSON的场景下,易用性与开发效率才是第一位的,而不是解析性能。CJsonObject
经过5年超过9个项目的生产环境应用验证其功能稳定性,开源后又被众多开发者用到自己的项目中,绝对是个很好的选择。
许可证:MIT
功能: JSON 解析,JSON 生成
平台: 标准 C/C++ 开发,跨平台
使用说明:将
CJsonObject.hpp、CJsonObject.cpp、cJSON.h、cJSON.c
四个文件加入代码目录,与用户自己的代码一起编译即可。
示例代码:
#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;
}