cppJson
使用C++写的json解析和生成,格式化的轻量库
前言
以前解析json时候用的是cjson,对我来说感觉有点繁琐,就萌生自己写一个json库的想法,就花了点时间自己写了一个简单的C++json库,因为是大二,水平有限,难免出现bug,如果有问题可以在评论区提出
作者
chenxuan
使用方法
所有代码包含于json.h头文件,包含该头文件即可使用所有功能
制作说明
- 源代码大约1000行,包括解析,生成和格式化json数据
- 支持使用//和/**/作为注释
- 使用非常简便.上手时间短
- 可以通过{}直接像go一样生成json,非常方便
使用方法
生成json解析对象
//create tree for json text
Json json(file.getFileBuff(temp));//file.getFileBuff(temp) is const char*
if(json.lastError()!=NULL)
{
printf("%s\n",json.lastError());
return ;
}
获取json数据
// find the key value
auto root=json.getRootObj();//get the result
if(root["empt"]!=Json::npos)
for(unsigned i=0;i
先获取解析后的对象,再用[]获取结果数组类型全都是object类型,可以通过.获取内部如果没有结果返回值是Json::npos
创造json对象
//create a new json text
Json::Node node={{"status","ok"}};
auto node=json.createObject({{"status","ok"},{"arr",{1,2,3,4}},{"strarr",{"we","lpl"}}});
可以直接通过{}来初始化对象json本身就是就是node对象,可以使用node的方法添加键值对
添加键值对
node["stdStr"]=string("koko");//添加字符串
node["strOld"]="ok";
node["null"]=nullptr;//添加null类型
node["bool"]=true;//添加bool类型
node["Int"]=1000;//添加int
node["double"]=1.43;//添加double
printf("node:\n%s\n",node());
C类型和C++的string类型都可以直接添加没有用[]原因是分析json数据用了[]
添加数组和对象
//添加对象,可以再创建一个node添加或者直接{}
node["nodeself"]=node;
node["obj"]={
{"status","ok"},
{"vector",vector()={"chenxuan","is","winner"}}
};
//C 类型数组
const char* oldStr[]={"asdf","nkjn"};
auto arrOld=json.createArray(oldStr,2);
//或者 Json::Node temp(oldStr,2);
json["arrold"]=arrOld;
//C++类型
node["arrarr"]=vector>()={{1,2,3},{4,5,6}};
node["boolArr"]=vector()={true,false};
C的数组需要调用createArray,或者再生成一个nodevector类型可以直接添加,Vector最多支持二维,超过二维需要先创建node数组再加入
初始化添加
Json json2={
{"float",12.3},
{"int",23},
{"bool",true},
{"str","string"},
{"null",nullptr},
{"stdstr",string("chenxuan")},
{"arrFloat",{2.3,8.9,2.3}},
{"arrBool",{true,false}},
{"arrStr",{{"chenxuan","create"},{"lover","xiaozhu"}}},
{"node",node},
{"arrVec",arrFlo}
};
printf("json2:\n%s \n",json2());
获取结果的方式均为()
格式化json
const char* result=json.formatPrint(json.getRootObj());
printf("%s\n",result);//json.getRootObj is get the root of create
补充说明
不支持json数组类型不相同如[1,"dad",true],因为这种数组的添加复杂而且使用不多,~~懒得支持~~
因为刚刚开发不久,后面改进后不能保证100%兼容性(尽量兼容)
技术有限难免出现bug,可以提issues,一定认真修改
感谢支持
如果你喜欢这个项目,可以给一个⭐
声明:本文部分素材转载自互联网,如有侵权立即删除 。
© 版权声明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!邮箱:cxysz1@tom.com
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
THE END
暂无评论内容