简单好用的C++JSON库CJsoObject,让使用jso如使用C++原生的结构体那般方便,随心所欲。
CJsoObject是个优秀的C++JSON库,截止2019年7月31日,CJsoObject开源一年,未经推广就在GitHub上获得130多star和60多fork。CJsoObject是基于cJSON全新开发一个C++版的JSON库,最大优势是轻量,简单好用,开发效率极高。
CJsoObject只有4个文件,拷贝到自己代码里源码级集成即可,无须编译成库,且跨平台和编译器。与大部分jso解析库访问多层嵌套jso非常麻烦不同,CJsoObject对多层嵌套jso的读取和生成使用非常简单。用CJsoObject的好处还在于完全不用专门的文档,头文件即文档,看完Demo立刻就会用,所有函数都十分通俗易懂。
绝大部分使用JSON的场景下,易用性与开发效率才是第一位的,而不是解析性能。CJsoObject经过5年超过9个项目的生产环境应用验证其功能稳定性,开源后又被众多开发者用到自己的项目中,绝对是个很好的选择。
许可证:MIT
托管地址: 码云gitee Github
功能:JSON解析,JSON生成
平台:标准C/C++开发,跨平台
使用说明:将 CJsoObject.hpp、CJsoObject.cpp、cJSON.h、cJSON.c 四个文件加入代码目录,与用户自己的代码一起编译即可。
示例代码:
#iclude #iclude #iclude "../CJsoObject.hpp"it mai(){ it iValue; std::strig strValue; eb::CJsoObject oJso("{\"refresh_iterval\":60," "\"dyamic_loadig\":[" "{" "\"so_path\":\"plugis/User.so\", \"load\":false, \"versio\":1," "\"cmd\":[" "{\"cmd\":2001, \"class\":\"eb::CmdUserLogi\"}," "{\"cmd\":2003, \"class\":\"eb::CmdUserLogout\"}" "]," "\"module\":[" "{\"path\":\"im/user/logi\", \"class\":\"eb::ModuleLogi\"}," "{\"path\":\"im/user/logout\", \"class\":\"eb::ModuleLogout\"}" "]" "}," "{" "\"so_path\":\"plugis/ChatMsg.so\", \"load\":false, \"versio\":1," "\"cmd\":[" "{\"cmd\":2001, \"class\":\"eb::CmdChat\"}" "]," "\"module\":[]" "}" "]" "}"); std::cout << oJso.ToStrig() << std::edl; std::cout << "-------------------------------------------------------------------" << std::edl; std::cout << oJso["dyamic_loadig"][0]["cmd"][1]("class") << std::edl; oJso["dyamic_loadig"][0]["cmd"][0].Get("cmd", iValue); std::cout << "iValue = " << iValue << std::edl; oJso["dyamic_loadig"][0]["module"][0].Get("path", strValue); std::cout << "strValue = " << strValue << std::edl; std::cout << "-------------------------------------------------------------------" << std::edl; oJso.AddEmptySubObject("deped"); oJso["deped"].Add("ebula", "https://github.com/Bwar/Nebula"); oJso["deped"].AddEmptySubArray("bootstrap"); oJso["deped"]["bootstrap"].Add("BEACON"); oJso["deped"]["bootstrap"].Add("LOGIC"); oJso["deped"]["bootstrap"].Add("LOGGER"); oJso["deped"]["bootstrap"].Add("INTERFACE"); oJso["deped"]["bootstrap"].Add("ACCESS"); std::cout << oJso.ToStrig() << std::edl; std::cout << "-------------------------------------------------------------------" << std::edl; std::cout << oJso.ToFormattedStrig() << std::edl;}
评论