CJsonObject 基于 cJSON 的 C++ 版 JSON 库开源项目

我要开发同款
匿名用户2018年07月17日
27阅读
开发技术C/C++
所属分类Web应用开发、JSON/BSON开发包
授权协议MIT

作品详情

简单好用的C++JSON库CJsonObject,让使用json如使用C++原生的结构体那般方便,随心所欲。

CJsonObject是个优秀的C++JSON库,截止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

托管地址: 码云gitee  Github

功能: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;}
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论