小白C++使用JSONCPP(Visual Studio)
一、简介
1、JSON是key-value形式存储传输数据,与XML类似,但数据量较小一些;
2、JSONCPP开源,开源用来解析JSON,C++里最常用,资料多,新手友好;
二、小白使用过程
三、编译JSONCPP源文件
1、下载地址:https://sourceforge.net/projects/jsoncpp/,这个版本比较老,但照样可以用,最新版本:https://github.com/open-source-parsers/jsoncpp
2、解压文件,jsoncpp-src-0.5.0/makefiles/vs71目录里找到jsoncpp.sln,用VS打开
3、在属性界面选择是Debug模式,选择多线程调试(MTD),也可以选择其他,但要与项目一致
4、配置好了之后进行编译生成,debug路径(xxx\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\build\vs71\debug\lib_json)下生成静态链接库json_vc71_libmtd.lib 。如果是release版本则类似。
四、C++设置属性
1、新建win32控制台项目
2、将jsoncpp-src-0.5.0\include\json整个文件夹拷贝到项目源文件所在目录中
3、将jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\build\vs71\debug\lib_json下生成静态链接库json_vc71_libmtd.lib拷贝到项目源文件所在目录中
4、在项目属性中添加包含目录:将..\json添加到包含目录;由于json_vc71_libmtd.lib库本身就在项目文件目录中,添加的话只能使用..\,所以可以不用添加库目录
5、添加附加依赖项
五、测试代码
#include "stdafx.h"
#include "json/json.h"
#includeusing namespace std;
int main(){
const char* str ="{\"praenomen\":\"Gaius\",\"nomen\":\"Julius\",\"cognomen\":\"Caezar\",""\"born\":-100,\"died\":-44}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)){
string praenomen = root["praenomen"].asString();
string nomen = root["nomen"].asString();
string cognomen = root["cognomen"].asString();
int born = root["born"].asInt();
int died = root["died"].asInt();
cout << praenomen + " " + nomen + " " + cognomen<< " was born in year " << born<< ", died in year " << died << endl;
}
system("pause");
return 0;
}
运行中可能报错,需要将运行库改为与之前编译lib一致的模式,这里使用MTD
六、杂
1、之前在网上找编译好的jsoncpp链接库,发现很难找到,并且找到了也很可能不适用;
2、将json文件夹以及生成的静态库放到项目目录中,这样分享代码的时候会方便,否则在其他电脑上无法运行,之后使用相对目录添加包含目录、连接库之类的东西。使用相对路径教程:https://jingyan.baidu.com/article/5225f26b093151e6fa09083f.html
3、参考:
C++解析json文件-VS2010中配置Jsoncpp:http://blog.****.net/kekong0713/article/details/52781482
C++ 解析Json——jsoncpp:http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html
Jsoncpp的使用:
https://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html