一:VS2019配置jsoncpp
1、下载jsoncpp:
进入官网:https://sourceforge.net/projects/jsoncpp/,下载jsoncpp,解压得到jsoncpp-src-0.5.0文件
2、编译链接
1)用VS2019打开jsoncpp-src-0.5.0\makefiles\vs71\jsoncpp.sln,如下图所示 image.png 2)设置VS2019编译环境为debug模式(或者release模式),如下图所示 image.png3)右击【lib_json】项目,选择【仅用于项目】->【仅生成lib_json】;
3)再次右击【libjson】项目,选择【仅用于项目】->【仅链接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、为你的项目配置jsoncpp(debug模式下)
1)选择【你的项目】->【属性】
2)选择【配置属性】->【VC++目录】->【包含目录】->添加jsoncpp-src-0.5.0\include文件夹
3)选择【配置属性】->【VC++目录】->【库目录】->jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夹
4)选择【配置属性】->【c/c++】->【常规】->【附加包含目录】,添加jsoncpp-src-0.5.0\include文件夹
5)选择【配置属性】->【c/c++】->【代码生成】->【运行库】,选择【MTd】
6)选择【配置属性】->【链接器】->【常规】->【附加库目录】,添加jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夹
7)选择【配置属性】->【链接器】->【输入】->【附加依赖项】,添加lib文件:json_vc71_libmtd.lib(编译生成的.lib文件,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夹下)
8)点击【应用】完成配置
4、为你的项目配置jsoncpp(release模式下)
除了(3)(5)(6)同debug模式下不一样,其他配置均一样
1)选择【你的项目】->【属性】
2)选择【配置属性】->【VC++目录】->【包含目录】->添加jsoncpp-src-0.5.0\include文件夹
选择【配置属性】->【VC++目录】->【库目录】->jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夹
4)选择【配置属性】->【c/c++】->【常规】->【附加包含目录】,添加jsoncpp-src-0.5.0\include文件夹
选择【配置属性】->【c/c++】->【代码生成】->【运行库】,选择【MT】
选择【配置属性】->【链接器】->【常规】->【附加库目录】,添加jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夹
7)选择【配置属性】->【链接器】->【输入】->【附加依赖项】,添加lib文件:json_vc71_libmtd.lib(编译生成的.lib文件,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json文件夹下)
8)点击【应用】完成配置
二:jsoncpp的使用
//示例字符串
//读取以太坊区块高度,响应结果为:
/*string str = "{\"id\":83,\"jsonrpc\" : \"2.0\",\"result\" : \"0xc94\" }";*/
#include <json/json.h>
string ReadJson(string str)
{
Json::Reader reader;
Json::Value root;
//从字符串中读取数据
if (reader.parse(str, root))
{
std::string result = root[result].asString();
return result;
}
return "";
}
//示例字符串
//读取以太坊区块hash值,响应结果为:
//{
//"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 "";
}
}
}
网友评论