小白C++使用JSONCPP(Visual Studio)

一、简介

1、JSON是key-value形式存储传输数据,与XML类似,但数据量较小一些;

2、JSONCPP开源,开源用来解析JSON,C++里最常用,资料多,新手友好;

二、小白使用过程

小白C++使用JSONCPP(Visual Studio)
C++使用JSONCPP过程

三、编译JSONCPP源文件

小白C++使用JSONCPP(Visual Studio)
编译文件

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),也可以选择其他,但要与项目一致

小白C++使用JSONCPP(Visual Studio)
设置属性

4、配置好了之后进行编译生成,debug路径(xxx\jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\build\vs71\debug\lib_json)下生成静态链接库json_vc71_libmtd.lib 。如果是release版本则类似。

四、C++设置属性

小白C++使用JSONCPP(Visual Studio)
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拷贝到项目源文件所在目录中

小白C++使用JSONCPP(Visual Studio)
拷贝到目录中

4、在项目属性中添加包含目录:将..\json添加到包含目录;由于json_vc71_libmtd.lib库本身就在项目文件目录中,添加的话只能使用..\,所以可以不用添加库目录

小白C++使用JSONCPP(Visual Studio)
包含目录

5、添加附加依赖项

小白C++使用JSONCPP(Visual Studio)
添加库为附加依赖项

五、测试代码

#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

小白C++使用JSONCPP(Visual Studio)
配置、平台以及运行库与之前的一致

六、杂

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