rapidjson解析json代碼實(shí)例以及常見(jiàn)的json core dump問(wèn)題
rapidjson解析json代碼實(shí)例
直接看代碼:
#include <iostream> #include <stdio.h> #include<unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<sstream> // 請(qǐng)自己下載開(kāi)源的rapidjson #include "rapidjson/prettywriter.h" #include "rapidjson/rapidjson.h" #include "rapidjson/document.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" #include "rapidjson/memorystream.h" using namespace std; using rapidjson::Document; using rapidjson::StringBuffer; using rapidjson::Writer; using namespace rapidjson; string getStringFromJson(const string &jsStr, const string &strKey) { Document document; if (document.Parse(jsStr.c_str()).HasParseError() || !document.HasMember(strKey.c_str())) { return ""; } const rapidjson::Value &jv = document[strKey.c_str()]; return jv.GetString(); } int main(int argc, char *argv[]) { string s = "{\"code\":0,\"msg\":\"ok\"}"; cout << s << endl; cout << getStringFromJson(s, "msg") << endl; return 0; }
結(jié)果:
{"code":0,"msg":"ok"}
ok
注意:
1. 如果不進(jìn)行document.Parse(jsStr.c_str()).HasParseError()
判斷,則很容易core dump
2. 如果不進(jìn)行!document.HasMember(strKey.c_str())
判斷,則很容易core dump
3. code的是為0,是整數(shù),如果調(diào)用上述getStringFromJson,會(huì)core dump,此時(shí)應(yīng)該用return jv.GetInt();
OK,不多說(shuō),人生苦短,我愛(ài)rapidjson
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Qt實(shí)現(xiàn)簡(jiǎn)易計(jì)時(shí)器的示例代碼
計(jì)時(shí)器實(shí)現(xiàn)四個(gè)功能:開(kāi)始計(jì)時(shí)、停止計(jì)時(shí)、暫停計(jì)時(shí)以及打點(diǎn)。當(dāng)點(diǎn)擊暫停時(shí),開(kāi)始按鈕和停止按鈕無(wú)法點(diǎn)擊。當(dāng)點(diǎn)擊停止時(shí),開(kāi)始按鈕和暫停按鈕無(wú)法點(diǎn)擊,此時(shí)停止按鈕變?yōu)榍辶恪1疚膶⒂肣t實(shí)現(xiàn)這樣的一個(gè)計(jì)時(shí)器,需要的可以參考一下2022-06-06C語(yǔ)言常用庫(kù)函數(shù)的使用及模擬實(shí)現(xiàn)詳解例舉
C語(yǔ)言庫(kù)函數(shù)是把自定義函數(shù)放到庫(kù)里,是別人把一些常用到的函數(shù)編完放到一個(gè)文件里,供程序員使用,下面讓我們一起來(lái)詳細(xì)了解它2022-04-04詳解C++編程中標(biāo)記語(yǔ)句與復(fù)合語(yǔ)句的寫(xiě)法
這篇文章主要介紹了C++編程中標(biāo)記語(yǔ)句與復(fù)合語(yǔ)句的寫(xiě)法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-01-01簡(jiǎn)要說(shuō)明C語(yǔ)言中指針函數(shù)與函數(shù)指針的區(qū)別
這篇文章主要介紹了C語(yǔ)言中指針函數(shù)與函數(shù)指針的區(qū)別,指針函數(shù)和函數(shù)指針是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-04-04JS調(diào)用C++函數(shù)拋出異常及捕捉異常詳解
這篇文章主要介紹了js調(diào)用C++函數(shù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-08-08C語(yǔ)言container of()函數(shù)案例詳解
這篇文章主要介紹了C語(yǔ)言container of()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08