Windows vs2015 Jsoncpp 庫使用記錄
阿新 • • 發佈:2019-01-22
編譯環境 window7 +vs2015 + release
執行環境 wind32 exe
編譯json lib
用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