亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用rapidjson實現(xiàn)解析嵌套的json的方法示例

 更新時間:2019年04月08日 11:52:15   作者:stpeace  
今天小編就為大家分享一篇關于利用rapidjson實現(xiàn)解析嵌套的json的方法示例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

利用rapidjson解析嵌套的json

看json串1:{"system":{"version":"v2.6.1", "name":"value"}}

廢話少說, 直接擼代碼:

#include <iostream>
#include <stdio.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<sstream>
// 請自己下載開源的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 getVersion(const string &jvStr)
{
 Document document;
 if (document.Parse(jvStr.c_str()).HasParseError() || !document.HasMember("system")) 
 {
 return "";
 }
 const rapidjson::Value &jvObject = document["system"];
 if(!jvObject.IsObject())
 {
 return "";
 }
 if(!jvObject.HasMember("version"))
 {
 return "";
 }
 const rapidjson::Value &jv = jvObject["version"];
 return jv.GetString();
}
int main(int argc, char *argv[])
{
 string s = "{\"system\":{\"version\":\"v2.6.1\", \"name\":\"value\"}}";
 cout << s << endl;
 cout << getVersion(s) << endl;
 return 0;
}

結果:

{"system":{"version":"v2.6.1", "name":"value"}}
v2.6.1

再看字符串:{"system": "{\"version\":\"v2.6.1\", \"name\":\"value\"}"}

直接上馬:

#include <iostream>
#include <stdio.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<sstream>
// 請自己下載開源的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 = "{\"system\": \"{\\\"version\\\":\\\"v2.6.1\\\", \\\"name\\\":\\\"value\\\"}\"}";
 cout << s << endl;
 string str = getStringFromJson(s, "system");
 cout << str << endl;
 cout << getStringFromJson(str, "version") << endl;
 return 0;
}

結果:

{"system": "{\"version\":\"v2.6.1\", \"name\":\"value\"}"}
{"version":"v2.6.1", "name":"value"}
v2.6.1

第二種方式的json串,看起來太惡心了。

另外,再次強調一下,json串解析的時候,容易core dump,所以要做好異常判斷,也要注意類型。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • 整理C語言中各種類型指針的特性與用法

    整理C語言中各種類型指針的特性與用法

    這篇文章主要介紹了C語言中各種類型指針的特性與用法整理,需要的朋友可以參考下
    2016-04-04
  • 淺談socket TCP編程中connect的一些坑

    淺談socket TCP編程中connect的一些坑

    下面小編就為大家?guī)硪黄獪\談socket TCP編程中connect的一些坑。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++中高性能內存池的實現(xiàn)詳解

    C++中高性能內存池的實現(xiàn)詳解

    在 C/C++ 中,內存管理是一個非常棘手的問題,我們在編寫一個程序的時候幾乎不可避免的要遇到內存的分配邏輯。本文將通過C++實現(xiàn)高性能內存池,感興趣的可以了解一下
    2022-10-10
  • C++中內存分區(qū)及其作用分析

    C++中內存分區(qū)及其作用分析

    C++內存分區(qū)包括棧區(qū)、堆區(qū)、全局靜態(tài)區(qū)、常量區(qū),各自負責不同的數(shù)據(jù)存儲和回收,棧區(qū)主要用于存放函數(shù)局部變量和參數(shù),堆區(qū)用于動態(tài)分配內存,全局靜態(tài)區(qū)用于存放全局靜態(tài)變量和靜態(tài)成員變量,常量區(qū)用于存放常量和字符串常量
    2023-04-04
  • C語言實現(xiàn)自動發(fā)牌程序

    C語言實現(xiàn)自動發(fā)牌程序

    這篇文章主要介紹了利用C語言實現(xiàn)自動發(fā)牌程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語言各種符號的使用介紹下篇

    C語言各種符號的使用介紹下篇

    C?語言的基本符號就有?20?多個,每個符號可能同時具有多重含義,而且這些符號之間相互組合又使得?C?語言中的符號變得更加復雜起來
    2022-08-08
  • Qt實現(xiàn)可以計算大數(shù)的簡單計算器

    Qt實現(xiàn)可以計算大數(shù)的簡單計算器

    計算器是我們生活中很常見的東西,它可以由多種語言多種方式來實現(xiàn)。本文主要介紹的是基于C++語言,由QT實現(xiàn)的可以計算大數(shù)的簡單計算器,需要的可以參考一下
    2022-12-12
  • Qt輸入類控件用法超詳細講解

    Qt輸入類控件用法超詳細講解

    Qt是一個著名的GUI框架,用來開發(fā)和用戶交互的圖形界面,作為GUI框架,豐富的控件和靈活的事件機制是不可或缺的,Qt在這一方面做得非常優(yōu)秀,下面這篇文章主要給大家介紹了關于Qt輸入類控件用法的相關資料,需要的朋友可以參考下
    2024-08-08
  • C++ pair方法與vector方法案例詳解

    C++ pair方法與vector方法案例詳解

    這篇文章主要介紹了C++ pair方法與vector方法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • C++下標運算符詳解

    C++下標運算符詳解

    C語言中的下標運算符用于訪問數(shù)組或指針變量中的元素,它使用方括號 [] 來表示,并在方括號內指定元素的索引位置,本文給大家詳細的講解一下C++的下標運算符,需要的朋友可以參考下
    2023-09-09

最新評論