Boost是一款高效的C++庫,支持多種各種C++標(biāo)準(zhǔn),并提供了許多高效的數(shù)據(jù)處理和算法庫。Boost中的json庫可以方便地處理json格式的數(shù)據(jù)。使用boost::property_tree和boost::json來解析json數(shù)據(jù)。
對于數(shù)組類型的json數(shù)據(jù),我們可以使用boost::json中的array類型來處理。
#include <iostream> #include <boost/json.hpp> #include <fstream> using namespace boost::json; int main() { std::string filename = "example.json"; std::ifstream f(filename); if (!f) { std::cerr << "Could not open file " << filename << std::endl; return 1; } value j; f >> j; if (!j.is_array()) { std::cerr << "Input is not an array.\n"; return 2; } for (auto& item : j.as_array()) { std::cout << item << std::endl; } return 0; }
在上面的代碼中,我們首先打開了一個(gè)名為“example.json”的文件,并讀取其中的JSON數(shù)據(jù)。然后,我們使用j.is_array()檢查讀入的json數(shù)據(jù)是否為數(shù)組類型。如果是,則使用j.as_array()訪問數(shù)組中的每一個(gè)元素。
如果想要對數(shù)組中的每個(gè)元素做更復(fù)雜的操作,我們可以使用value類型的迭代器遍歷數(shù)組。例如,我們可以使用以下代碼將數(shù)組中的元素相加并輸出結(jié)果:
int sum = 0; for (auto it = j.as_array().begin(); it != j.as_array().end(); ++it) { sum += it->as_int64(); } std::cout << "The sum of array is " << sum << std::endl;
總之,使用boost::json處理數(shù)組類型的JSON數(shù)據(jù)非常方便。只需要使用is_array()和as_array()方法即可分別檢查和訪問數(shù)組數(shù)據(jù)。