JsonCpp操作數組對象


JsonCpp操作數組對象

概述

​ Json格式數據中,除了簡單的String類型和一些非String類型,也有像各種高級語言中的數組類型一般的數組對象,且Json數組在實際開發中使用頻率也比較高,這里就記錄一些對於Json數組的常規操作。

JsonCpp操作簡單數組對象

​ Json數組對象以”[]”進行包裹,方括號內的元素即是數組的元素。數組的元素可以是一些基本的Json類型,也可以是一些復雜的Json對象,剛開始就說一下對於元素為基本Json類型的數組如何操作,這里先給出一個簡單的Json數組例子:

[ 1, 2, 3, 4 ]
  • 1

​ 上述例子則表示了一個結構簡單的Json數組,取其中元素的操作如各高級語言一般,可以使用”[]” + Index的方式,回顧上一篇JsonCpp的介紹,要取出Json數據中的某個元素的值,則應該將代表該數據的對象先獲取得到,使用”[]” + Index即是獲取了代表該數據的對象,之后再根據Json數據中的數據類型去執行Json::Value的成員方法asType(Type指代某種Json類型)。下面給出操作上述例子的Json數組的代碼:

// // main.cpp // TestJson // // Created by Morris on 2016/11/21. // Copyright © 2016年 Morris. All rights reserved. // #include <iostream> #include <fstream> #include <string> #include <json/json.h> int main(int argc, const char * argv[]) { std::ifstream ifs; ifs.open("/Users/Morris/Code/cpp/test/test.json"); Json::Value val; Json::Reader reader; if (!reader.parse(ifs, val)) { return -1; } int sz = val.size(); for (int i = 0; i < sz; ++i) { std::cout << "Element " << i + 1 << ": "; std::cout << val[i].asInt(); std::cout << std::endl; } return 0; }

 

JsonCpp操作復雜Json數組

​ 對於Json數組,還有另外的一些復雜的情況,如Json數組是某一Json對象的一部分,或者Json數組中元素是復雜的Json對象。這兩種情況在Json的實際運用中出現的次數還比較頻繁,先說第一種,Json數組是某一Json對象的一部分,先給出一個具體的例子:

{
    "Name": "Morris", "Skills": [ "Basketball", "Sing", "Play Games", "Program" ] }
  • 1
  • 2
  • 3
  • 4

​ 名為Skills的Json數組為Json對象的一個屬性,獲取Skills中具體數據的方法,則是先獲取該Json數組對象,如獲取Json對象的屬性一般使用key值即可從Json對象中獲取到相應的屬性,之后再使用上面提到的Json數組操作方式即可進行對於Json數組元素的操作了,具體代碼如下:

// // main.cpp // TestJson // // Created by Morris on 2016/11/21. // Copyright © 2016年 Morris. All rights reserved. // #include <iostream> #include <fstream> #include <string> #include <json/json.h> int main(int argc, const char * argv[]) { std::ifstream ifs; ifs.open("/Users/Morris/Code/cpp/test/test.json"); Json::Value val; Json::Reader reader; if (!reader.parse(ifs, val)) { return -1; } int sz = val["Skills"].size(); for (int i = 0; i < sz; ++i) { std::cout << "Element " << i + 1 << ": "; std::cout << val["Skills"][i].asString(); std::cout << std::endl; } return 0; }

​ 對於Json數組的另一種比較復雜的情況,Json數組元素是對象,看過上面的敘述,應該也比較容易想到操作方式了。即先獲取Json數組對象,之后再以Index方式獲取到數組中單個元素,再對單個元素以操作Json對象的方式操作即可。具體代碼不貼出來了,可以自己試着編寫一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM