1 下载jsoncpp
jsoncpp下载链接:http://sourceforge.net/projects/jsoncpp/
1.1 解压如图

1.2 进入…\jsoncpp-src-0.5.0\makefiles\vs71
执行jsoncpp.sln,进行编译,会区分Debug/Release以及x86/x64模式。
编译过程中常见问题:error MSB8036: 找不到 Windows SDK 版本8.1
解决方法:进入控制面板,依次进入:程序->程序和功能->在卸载或更改程序中找到visual studio 2017->右键->更改
单击更改后会出现以下界面

勾选"Windows8.1 SDK和UCRT SDK",然后点击“修改”,即可下载安装SDK8.1更改SDK版本。
使用VS打开jsoncpp项目,然后点击菜单栏中“项目” -> “重定解决方案目标” ,即出现如下界面,选择8.1版本,点击确定:

重新编译: “生成” -> “生成解决方案”,编译成功,在目录“jsoncpp-src-0.5.0\build\vs71\debug\lib_json”生成静态库文件json_vc71_libmtd.lib
测试使用
2 测试
在使用时,需要把json_vc71_libmtd.lib文件放到当前项目目录下,同时将jsoncpp的include文件夹也拷贝到当前项目目录下,如下图:

2.1写json文件
#include <fstream>
#include "include/json/json.h"
using namespace std;
#pragma comment(lib, "json_vc71_libmtd.lib")
int main()
{
Json::Value root;
root["occupatio"] = "paladin";
root["camp"] = "alliance";
root["role_id"] = 1;
Json::StyledWriter writer;
ofstream os;
os.open("test.json");
os << writer.write(root);
os.close();
return 0;
}
2.2 从json文件读
#include <fstream>
#include <iostream>
#include <string>
#include "include/json/json.h"
using namespace std;
#pragma comment(lib, "json_vc71_libmtd.lib")
int main()
{
ifstream is("test.json", ios::binary);
if (!is.is_open())
{
cout << "open json file failed" << endl;
return -1;
}
Json::Reader reader;
Json::Value root;
int nRole = 0;
string strOccupation;
string strCamp;
if (reader.parse(is, root))
{
nRole = root["role_id"].asInt();
strOccupation = root["occupatio"].asString();
strCamp = root["camp"].asString();
}
is.close();
cout << "role_id is: " << nRole << endl;
cout << "occupation is: " << strOccupation << endl;
cout << "camp is:" << strCamp << endl;
system("pause");
return 0;
}
提示
调试是会出现error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”类似的错误,解决方法是:
项目属性 -> 配置属性 -> C/C++ -> 代码生成 -> 运行库–>多线程调试(/MTd)

被折叠的 条评论
为什么被折叠?



