一:VS2019配置jsoncpp
1、下載jsoncpp:
進(jìn)入官網(wǎng):https://sourceforge.net/projects/jsoncpp/卿泽,下載jsoncpp,解壓得到j(luò)soncpp-src-0.5.0文件
2鳖链、編譯鏈接
1)用VS2019打開(kāi)jsoncpp-src-0.5.0\makefiles\vs71\jsoncpp.sln驳遵,如下圖所示3)右擊【lib_json】項(xiàng)目,選擇【僅用于項(xiàng)目】->【僅生成lib_json】蠢护;
3)再次右擊【libjson】項(xiàng)目雅宾,選擇【僅用于項(xiàng)目】->【僅鏈接lib_json】
4)若是debug模式下,則生成的.lib文件在jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夾下葵硕;若是release模式下秀又,則生成的.lib文件在jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夾下
3、為你的項(xiàng)目配置jsoncpp(debug模式下)
1)選擇【你的項(xiàng)目】->【屬性】
2)選擇【配置屬性】->【VC++目錄】->【包含目錄】->添加jsoncpp-src-0.5.0\include文件夾
3)選擇【配置屬性】->【VC++目錄】->【庫(kù)目錄】->jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夾
4)選擇【配置屬性】->【c/c++】->【常規(guī)】->【附加包含目錄】贬芥,添加jsoncpp-src-0.5.0\include文件夾
5)選擇【配置屬性】->【c/c++】->【代碼生成】->【運(yùn)行庫(kù)】吐辙,選擇【MTd】
6)選擇【配置屬性】->【鏈接器】->【常規(guī)】->【附加庫(kù)目錄】,添加jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夾
7)選擇【配置屬性】->【鏈接器】->【輸入】->【附加依賴項(xiàng)】蘸劈,添加lib文件:json_vc71_libmtd.lib(編譯生成的.lib文件昏苏,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夾下)
8)點(diǎn)擊【應(yīng)用】完成配置
4、為你的項(xiàng)目配置jsoncpp(release模式下)
除了(3)(5)(6)同debug模式下不一樣威沫,其他配置均一樣
1)選擇【你的項(xiàng)目】->【屬性】
2)選擇【配置屬性】->【VC++目錄】->【包含目錄】->添加jsoncpp-src-0.5.0\include文件夾
選擇【配置屬性】->【VC++目錄】->【庫(kù)目錄】->jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夾
4)選擇【配置屬性】->【c/c++】->【常規(guī)】->【附加包含目錄】贤惯,添加jsoncpp-src-0.5.0\include文件夾
選擇【配置屬性】->【c/c++】->【代碼生成】->【運(yùn)行庫(kù)】,選擇【MT】
選擇【配置屬性】->【鏈接器】->【常規(guī)】->【附加庫(kù)目錄】棒掠,添加jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夾
7)選擇【配置屬性】->【鏈接器】->【輸入】->【附加依賴項(xiàng)】孵构,添加lib文件:json_vc71_libmtd.lib(編譯生成的.lib文件,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夾下)
8)點(diǎn)擊【應(yīng)用】完成配置
二:jsoncpp的使用
//示例字符串
//讀取以太坊區(qū)塊高度烟很,響應(yīng)結(jié)果為:
/*string str = "{\"id\":83,\"jsonrpc\" : \"2.0\",\"result\" : \"0xc94\" }";*/
#include <json/json.h>
string ReadJson(string str)
{
Json::Reader reader;
Json::Value root;
//從字符串中讀取數(shù)據(jù)
if (reader.parse(str, root))
{
std::string result = root[result].asString();
return result;
}
return "";
}
//示例字符串
//讀取以太坊區(qū)塊hash值颈墅,響應(yīng)結(jié)果為:
//{
//"id":1,
//"jsonrpc" : "2.0",
//"result" : {
// "hash":"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
// "nonce" : "0x",
// "blockHash" : "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
// "blockNumber" : "0x15df", // 5599
// "transactionIndex" : "0x1", // 1
// "from" : "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
// "to" : "0x85h43d8a49eeb85d32cf465507dd71d507100c1",
// "value" : "0x7f110", // 520464
// "gas" : "0x7f110", // 520464
// "gasPrice" : "0x09184e72a000",
// "input" : "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360",
//}
//}
string readJson(string str) {
int32_t index = str.find("{");
if (-1 != index) {
string resultJson = str.substr(index, str.size() - index);
Json::Reader reader;
Json::Value value;
if (reader.parse(resultJson, value)) {
if (!value["result"].isNull()) {
Json::Value result = value["result"];
if (!result["hash"].isNull()) {
const char* hash = result["hash"].asCString();
return hash;
}
}
return "";
}
}
}