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

C++使用jsoncpp解析json的方法示例

 更新時間:2020年03月03日 11:46:35   作者:feengg  
這篇文章主要介紹了C++使用jsoncpp解析json的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言:

曾經(jīng)一段時間XML成為互聯(lián)網(wǎng)業(yè)界內(nèi)的數(shù)據(jù)傳輸格式標準,但有人對XML提出了質(zhì)疑,認為XML數(shù)據(jù)格式比較繁雜,冗長等,于是提出了一種新的表示格式—JSON。

對于JSON格式,在此就不作詳細的說明了,下面主要討論下C++解析json文件的工具—Jsoncpp的使用。

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,和xml類似,本文主要對VS2008中使用Jsoncpp解析json的方法做一下記錄。
Jsoncpp是個跨平臺的開源庫,下載地址:http://sourceforge.net/projects/jsoncpp/。

解壓:tar -zvxf jsoncpp-src-0.5.0.tar.gz

進入到j(luò)soncpp解壓目錄下,執(zhí)行命令:

sudo scons platform=linux-gcc

將/jsoncpp-src-0.5.0/include/目錄下的json文件夾拷貝到 /usr/local/include/

將jsoncpp-src-0.5.0/libs/linux-gcc-4.9.1/目錄下的libjson_linux-gcc-4.9.1_libmt.a 拷貝到 /usr/local/lib/ 下,并為了方便使用,將其重命名為libjson.a

Jsoncpp使用說明:

下面通過一個簡單的case說明jsoncpp里主要的接口函數(shù),通過這些基本的函數(shù)便可以完成的Json文件的解析和處理。

jsoncpp中主要的類:

  • Json::Value:可以表示所有支持的類型,如:int , double ,string , object, array等。其包含節(jié)點的類型判斷(isNull,isBool,isInt,isArray,isMember,isValidIndex等),類型獲取(type),類型轉(zhuǎn)換(asInt,asString等),節(jié)點獲取(get,[]),節(jié)點比較(重載<,<=,>,>=,==,!=),節(jié)點操作(compare,swap,removeMember,removeindex,append等)等函數(shù)。
  • Json::Reader:將文件流或字符串創(chuàng)解析到Json::Value中,主要使用parse函數(shù)。Json::Reader的構(gòu)造函數(shù)還允許用戶使用特性Features來自定義Json的嚴格等級。
  • Json::Writer:與JsonReader相反,將Json::Value轉(zhuǎn)換成字符串流等,Writer類是一個純虛類,并不能直接使用。在此我們使用 Json::Writer 的子類:Json::FastWriter(將數(shù)據(jù)寫入一行,沒有格式),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();   // 根結(jié)點個數(shù)
  
    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;
      }
    }
  }
 
}

 到此這篇關(guān)于C++使用jsoncpp解析json的方法示例的文章就介紹到這了,更多相關(guān)C++ jsoncpp解析json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 中實現(xiàn)把EXCEL的數(shù)據(jù)導入數(shù)據(jù)庫(ACCESS、MSSQL等)實例代碼

    C++ 中實現(xiàn)把EXCEL的數(shù)據(jù)導入數(shù)據(jù)庫(ACCESS、MSSQL等)實例代碼

    這篇文章主要介紹了C++ 中實現(xiàn)把EXCEL的數(shù)據(jù)導入數(shù)據(jù)庫(ACCESS、MSSQL等)實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • C/C++ break和continue區(qū)別及使用方法

    C/C++ break和continue區(qū)別及使用方法

    這篇文章主要介紹了C/C++ break和continue區(qū)別及使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 一文詳解C++中的引用與關(guān)鍵字auto

    一文詳解C++中的引用與關(guān)鍵字auto

    引用就是給一個已經(jīng)存在的變量取一個別名,與變量共用一段內(nèi)存空間。關(guān)鍵字auto一般可以用來自動識別類型,本文主要來講講二者的相關(guān)知識,需要的可以參考一下
    2023-04-04
  • C語言初階之數(shù)組詳細介紹

    C語言初階之數(shù)組詳細介紹

    大家好,本篇文章主要講的是C語言初階之數(shù)組詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言通訊錄實例分享

    C語言通訊錄實例分享

    這篇文章主要為大家分享了C語言通訊錄實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 求子數(shù)組最大和的解決方法詳解

    求子數(shù)組最大和的解決方法詳解

    本篇文章是對求子數(shù)組最大和的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 利用Matlab繪制優(yōu)美的k線圖

    利用Matlab繪制優(yōu)美的k線圖

    本期又是一個花里胡哨的數(shù)據(jù)可視化,前兩天刷到了耐克的視覺設(shè)計師Gladys Orteza繪制的k線圖作品,把沉悶的股票圖變成了精彩的風景,但是那些大部分是真的完全看不清,我這里挑選了幾個能看清的k線圖風格將其用MATLAB進行了實現(xiàn)
    2022-10-10
  • C++面試八股文之static_cast你了解嗎

    C++面試八股文之static_cast你了解嗎

    C++11引入四種新的類型轉(zhuǎn)換,分別是static_cast、dynamic_cast、const_cast、和reinterpret_cast,下面就來和大家講講static_cast中面試常考的知識點吧
    2023-06-06
  • 最新評論