1. 程式人生 > >Windows vs2015 Jsoncpp 庫使用記錄

Windows vs2015 Jsoncpp 庫使用記錄

編譯環境 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