c++ CJsonObject 读写json
创始人
2024-02-23 08:56:45
0

CJsonObject简介

        CJsonObject是Bwar基于cJSON全新开发一个C++版的JSON库,CJsonObject的最大优势是简单、轻量、跨平台,开发效率极高,尤其对多层嵌套json的读取和生成、修改极为方便。CJsonObject比cJSON简单易用得多,且只要不是有意不释放内存就不会发生内存泄漏。用CJsonObject的好处在于完全不用专门的文档,头文件即文档,所有函数都十分通俗易懂,最为关键的一点是解析JSON和生成JSON的编码效率非常高。
GitHub地址:https://github.com/Bwar/CJsonObject

CJsonObject使用

        简单到只需往项目添加四个文件:cJson.h、cJson.c、CJsonObject.hpp、CJsonObject.cpp。

在使用时只需包含一个头文件

#include "CJsonObject.hpp"

vs2019编译提示“ error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.”

解决办法:在vs项目属性 ——C/C++——预处理——预处理器定义中新增,添加“_CRT_SECURE_NO_WARNINGS”,如下图所示:

 CJsonObject示例:

  • 写json文件:

#include 
void writeJsonFile(const std::string fileName)
{std::ofstream os(fileName);if (!os) return;neb::CJsonObject root;root.Add("age", 21);neb::CJsonObject friendsObj;friendsObj.Add("firend_age", 21);friendsObj.Add("firend_name", "ZhouWuxian");friendsObj.Add("firend_sex", "man");root.Add("friends", friendsObj);neb::CJsonObject hobbyObj;hobbyObj.Add("sing");hobbyObj.Add("run");hobbyObj.Add("Tai Chi");root.Add("hobby", hobbyObj);root.Add("name", "shuiyixin");root.Add("sex", "man");//os << root.ToString(); // 格式化输出os << root.ToFormattedString(); // 非格式化输出os.close();return;
}

json文件内容:

  • 读json文件

#include 
void readJsonFile(const std::string fileName)
{std::ifstream file;file.open(fileName, std::ios::in);//指针定位到文件末尾file.seekg(0, std::ios::end);int fileLength = file.tellg();//指定定位到文件开始file.seekg(0, std::ios::beg);char* buffer = new char[fileLength + 1];file.read(buffer, fileLength);buffer[fileLength] = '\0';std::string strJson = buffer;if (buffer) {delete[] buffer;}file.close();neb::CJsonObject root;if (!root.Parse(strJson)) return;int age = 0;root.Get("age", age);root.Add("age", 21);neb::CJsonObject friendsObj;root.Get("friends", friendsObj);if (friendsObj.IsEmpty()) return;int friend_age = 0;friendsObj.Get("firend_age", friend_age);std::string friend_name;friendsObj.Get("firend_name", friend_name);std::string friend_sex;friendsObj.Get("firend_sex", friend_sex);neb::CJsonObject hobbyObj;root.Get("hobby", hobbyObj);if (hobbyObj.IsEmpty() && hobbyObj.IsArray()) return;for (int i = 0; i < hobbyObj.GetArraySize(); ++i) {std::string info;hobbyObj.Get(i, info);std::cout << info << std::endl;}std::string name;root.Get("name", name);std::string sex;root.Get("sex", sex);return;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...