c++之使用Jsoncpp解析json數(shù)據(jù)

一: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驳遵,如下圖所示
image.png

2)設(shè)置VS2019編譯環(huán)境為debug模式(或者release模式)境蔼,如下圖所示
image.png

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文件夾
\color{red}{3)}選擇【配置屬性】->【VC++目錄】->【庫(kù)目錄】->jsoncpp-src-0.5.0\build\vs71\release\lib_json文件夾
4)選擇【配置屬性】->【c/c++】->【常規(guī)】->【附加包含目錄】贤惯,添加jsoncpp-src-0.5.0\include文件夾
\color{red}{5)}選擇【配置屬性】->【c/c++】->【代碼生成】->【運(yùn)行庫(kù)】,選擇【MT】
\color{red}{6)}選擇【配置屬性】->【鏈接器】->【常規(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 "";
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雾袱,隨后出現(xiàn)的幾起案子恤筛,更是在濱河造成了極大的恐慌,老刑警劉巖芹橡,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毒坛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)煎殷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門屯伞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人豪直,你說(shuō)我怎么就攤上這事劣摇。” “怎么了顶伞?”我有些...
    開(kāi)封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵饵撑,是天一觀的道長(zhǎng)剑梳。 經(jīng)常有香客問(wèn)我唆貌,道長(zhǎng),這世上最難降的妖魔是什么垢乙? 我笑而不...
    開(kāi)封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任锨咙,我火速辦了婚禮,結(jié)果婚禮上追逮,老公的妹妹穿的比我還像新娘酪刀。我一直安慰自己,他們只是感情好钮孵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布骂倘。 她就那樣靜靜地躺著,像睡著了一般巴席。 火紅的嫁衣襯著肌膚如雪历涝。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天漾唉,我揣著相機(jī)與錄音荧库,去河邊找鬼。 笑死赵刑,一個(gè)胖子當(dāng)著我的面吹牛分衫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播般此,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚪战,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了铐懊?” 一聲冷哼從身側(cè)響起屎勘,我...
    開(kāi)封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎居扒,沒(méi)想到半個(gè)月后概漱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喜喂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年瓤摧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竿裂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡照弥,死狀恐怖腻异,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情这揣,我是刑警寧澤悔常,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站给赞,受9級(jí)特大地震影響机打,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜片迅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一残邀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柑蛇,春花似錦芥挣、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盆耽,卻和暖如春蹋砚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背征字。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工都弹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匙姜。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓畅厢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親氮昧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子框杜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容