C++中的JSON寫入數(shù)據(jù)類型可以通過(guò)rapidjson庫(kù)來(lái)實(shí)現(xiàn),rapidjson是一個(gè)非常快速的C++ JSON解析器/生成器,可以將JSON格式的數(shù)據(jù)轉(zhuǎn)化為C++對(duì)象或者將C++對(duì)象轉(zhuǎn)化為JSON格式的數(shù)據(jù)。
JSON支持很多基本數(shù)據(jù)類型,如string、number、bool、null等
#include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" using namespace rapidjson; int main() { Document document; document.SetArray(); Document::AllocatorType& allocator = document.GetAllocator(); for (int i = 0; i< 10; i++) { Value object(kObjectType); object.AddMember("name", Value().SetString("tom", allocator), allocator); object.AddMember("age", i + 10, allocator); object.AddMember("isStudent", true, allocator); document.PushBack(object, allocator); } StringBuffer buffer; Writerwriter(buffer); document.Accept(writer); std::cout<< buffer.GetString()<< std::endl; return 0; }
在以上代碼中,我們首先通過(guò)Document對(duì)象來(lái)創(chuàng)建一個(gè)JSON數(shù)組,并獲取Document對(duì)象的分配器Allocator,然后利用Value對(duì)象和其相應(yīng)的SetXxx函數(shù)來(lái)設(shè)置數(shù)組中對(duì)象的屬性,再將此對(duì)象push到Document中,形成一個(gè)完整的JSON數(shù)組數(shù)據(jù)。最后通過(guò)rapidjson庫(kù)的Writer對(duì)數(shù)組進(jìn)行序列化輸出。
在本例中,我們?cè)诿恳粋€(gè)JSON object中設(shè)置了三個(gè)屬性,分別為name、age、isStudent,其類型分別為string、number、bool。其中字符串類型需要我們利用Allocator特殊地分配內(nèi)存空間。其他的類型都可以直接賦為相應(yīng)的值。
總之,以上代碼便是利用C++及rapidjson庫(kù)實(shí)現(xiàn)JSON數(shù)據(jù)的寫入操作的例子,同時(shí)也展示了如何設(shè)置JSON的基本數(shù)據(jù)類型。