编译环境 window7 +vs2015 + release
运行环境 wind32 exe
编译json lib
json 源码下载:
URL: https://github.com/open-source-parsers/jsoncpp
用vs2015打开makefiles\msvc2010下的工程目录,vs2015提示升级配置,选择确定
jsonlib编译设置
1. 选择 release 版本
2. 编译设置 C/C++ 代码生成->运行时库 多线程 DLL (/MD)
3. 常规->项目默认值->字符集 使用多字节字符集
新建win32 控制台项目
项目工程设置项
1. 选择 release 版本
2. 编译设置 C/C++ 代码生成->运行时库 多线程 DLL (/MD)
3. 常规->项目默认值->字符集 使用多字节字符集
4. 链接器->输入-> 附加依赖项 lib_json.lib
5. 链接器->常规-> 附加库目录
特别注意: 运行时库的设置 和编译平台一定要相同,否则引用jsoncpp会有异常
测试代码:
// JsoncppTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"json/json.h"
#include "vector"
#include "string"
#include <iostream>
/*
{
"sn_list": ["AFAE7894DA24EDAE","45897AFADFADFAE"],
"err": {
"errcode": "9000",
"errmsg": "keys do not exist"
}
}
*/
int main()
{
//create json string
std::vector<std::string> vecSN;
vecSN.emplace_back(std::string("123QWEDDSDFXD5564"));
vecSN.emplace_back(std::string("45785DSFAAEAE44AD"));
Json::Value error;
Json::Value root;
//JSON 格式易于阅读
Json::StyledWriter fwriter;
//一行字符串
//Json::FastWriter fwriter
root["sn_list"].resize(0);
for (int i = 0; i < vecSN.size(); i++)
{
root["sn_list"].append(vecSN[i].c_str());
}
error["errcode"] = "9000";
error["errmsg"] = "keys do not exist";
root["err"] = error;
std::string strJSON = fwriter.write(root);
std::cout << "-----json style format: -------\n" << strJSON << std::endl;
std::cout << "-----json parse: -------\n";
Json::Reader reader;
Json::Value sn_list;
Json::Value root_reader;
if (!reader.parse(strJSON, root_reader))
{
std::cout << "json parse error.." << std::endl;
return 0;
}
std::cout << "error msg: " << root_reader["err"]["errmsg"].asString() << std::endl;
sn_list = root_reader["sn_list"];
if (sn_list.isArray() && sn_list.size() > 0)
{
for (int i = 0; i < sn_list.size(); i++)
{
std::cout << "SN:" << sn_list[i].asString() << std::endl;
}
}
return 0;
}
运行结果:
-----json style format: -------
{
"err" : {
"errcode" : "9000",
"errmsg" : "keys do not exist"
},
"sn_list" : [ "123QWEDDSDFXD5564", "45785DSFAAEAE44AD" ]
}
-----json parse: -------
error msg: keys do not exist
SN:123QWEDDSDFXD5564
SN:45785DSFAAEAE44AD
完整代码下载: https://download.csdn.net/download/xiao3404/10542550
相关参考资料 https://blog.csdn.net/c_base_jin/article/details/71346503