怎么在C++中使用jsoncpp對json進行解析

怎么在C++中使用jsoncpp對json進行解析?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

創新互聯主要從事網站制作、成都網站設計、網頁設計、企業做網站、公司建網站等業務。立足成都服務豐臺,10年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:18982081108

jsoncpp中主要的類:

  • Json::Value:可以表示所有支持的類型,如:int , double ,string , object, array等。其包含節點的類型判斷(isNull,isBool,isInt,isArray,isMember,isValidIndex等),類型獲取(type),類型轉換(asInt,asString等),節點獲取(get,[]),節點比較(重載<,<=,>,>=,==,!=),節點操作(compare,swap,removeMember,removeindex,append等)等函數。

  • Json::Reader:將文件流或字符串創解析到Json::Value中,主要使用parse函數。Json::Reader的構造函數還允許用戶使用特性Features來自定義Json的嚴格等級。

  • Json::Writer:與JsonReader相反,將Json::Value轉換成字符串流等,Writer類是一個純虛類,并不能直接使用。在此我們使用 Json::Writer 的子類:Json::FastWriter(將數據寫入一行,沒有格式),Json::StyledWriter(按json格式化輸出,易于閱讀)。

  • Json::Reader可以通過對Json源目標進行解析,得到一個解析好了的Json::Value,通常字符串或者文件輸入流可以作為源目標。

json示例:

[
 { "name": "json",
  "lines": 
   [
    { "line": "1" },
    { "line": "2" },
    { "cpp": "jsoncpp" },
    { "java": "jsoninjava" },
    { "php": "support" }
   ]
 },
 { "name": "c++",
  "lines": 
   [
    { "line": "3" },
    { "line": "4" },
    { "cpp": "jsoncpp" },
    { "java": "jsoninjava" },
    { "php": "nosupport" }
   ]
 }
]

C++代碼:

#include <iostream>
#include <fstream>
#include <string>
#include "../src/json/json.h"
 
using namespace std;
using namespace Json;
void main()
{
  fstream ofile("json.json");
  string strjson;
  if (!ofile.is_open()) {
    return;
  }
 
  string strline;
  while (getline(ofile, strline)) {
   strjson += strline;
  }
  
  ofile.close();
  
  Json::Reader reader;  // 讀取器
  Json::Value root;    // Value的值值可以是任一對象
  
  if (reader.parse(strjson, root)) {
  
    int size = root.size();   // 根結點個數
  
    for (int j = 0; j < size; j++) {
      
      cout << root[j]["name"].asString() << endl;
 
      const Json::Value arrayObj = root[j]["lines"];
 
      for (int i = 0; i < arrayObj.size(); i++) {
 
        if (arrayObj[i].isMember("line")) {
          cout << arrayObj[i]["line"].asString() << endl;
        }
        if (arrayObj[i].isMember("cpp")) {
          cout << arrayObj[i]["cpp"].asString() << endl;
        }
        if (arrayObj[i].isMember("java")) {
          cout << arrayObj[i]["java"].asString() << endl;
        }
    
        int m = 0;
      }
    }
  }
 
}

看完上述內容,你們掌握怎么在C++中使用jsoncpp對json進行解析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

本文標題:怎么在C++中使用jsoncpp對json進行解析
標題網址:http://m.kartarina.com/article26/pphccg.html

成都網站建設公司_創新互聯,為您提供網站收錄響應式網站移動網站建設手機網站建設網站排名App開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發
主站蜘蛛池模板: 97碰碰碰人妻视频无码| 久久亚洲精品成人无码| 亚洲日韩精品无码AV海量| 在线精品自拍无码| 伊人久久精品无码二区麻豆| 日韩国产精品无码一区二区三区| 亚洲精品一级无码鲁丝片| 国产精品亚洲аv无码播放| 在线精品自偷自拍无码中文| 国产AV无码专区亚洲AV琪琪 | 国产AV无码专区亚洲Av| 久久久久无码精品| 一本无码人妻在中文字幕免费| 无码专区人妻系列日韩精品少妇 | 国产AⅤ无码专区亚洲AV| 无码精品视频一区二区三区| 人妻无码久久精品| 亚洲精品无码你懂的| 久久午夜无码免费| 青春草无码精品视频在线观| av无码国产在线看免费网站| 亚洲精品无码久久一线| 内射无码专区久久亚洲| 日韩中文无码有码免费视频 | 日韩精品无码一区二区三区不卡| 亚洲AV无码成人精品区日韩 | 亚洲AV蜜桃永久无码精品| 精品日韩亚洲AV无码 | 亚洲日韩欧洲无码av夜夜摸| 亚洲精品无码高潮喷水A片软| 无码精品人妻一区二区三区漫画 | heyzo专区无码综合| 亚洲爆乳无码专区www| 91精品国产综合久久四虎久久无码一级 | 亚洲AV蜜桃永久无码精品| 久久无码高潮喷水| 人妻丰满熟妞av无码区| 亚洲av无码片在线播放| 国产成人无码久久久精品一| 亚洲国产综合无码一区| 久久无码专区国产精品s|