近年來,JSON成為了前后端交互數據的主流格式。而在C++中,如果要實現JSON字符串的組裝,我們可以使用第三方庫,如rapidjson、nlohmann/json等。下面我們就以rapidjson為例,講述如何在C++中組裝JSON字符串。
首先,我們需要在程序中包含rapidjson的頭文件。比如:
#include "include/rapidjson/document.h" #include "include/rapidjson/writer.h" #include "include/rapidjson/stringbuffer.h"
接下來,我們可以使用rapidjson的Document類來創建JSON數據。例如,下面的代碼創建了一個空的JSON對象:
rapidjson::Document doc; doc.SetObject();
我們可以通過AddMember()方法往JSON對象中添加鍵值對。例如,下面的代碼往JSON對象中添加了一個名為"name",值為"張三"的鍵值對:
rapidjson::Value name; name.SetString("張三", doc.GetAllocator()); doc.AddMember("name", name, doc.GetAllocator());
我們還可以往JSON對象中添加一個數組類型。例如,下面的代碼創建了一個名為"phones",包含三個值"13512345678"、"13612345678"、"13712345678"的數組:
rapidjson::Value phones(rapidjson::kArrayType); phones.PushBack("13512345678", doc.GetAllocator()); phones.PushBack("13612345678", doc.GetAllocator()); phones.PushBack("13712345678", doc.GetAllocator()); doc.AddMember("phones", phones, doc.GetAllocator());
完成上述步驟后,我們已經成功創建了一個JSON對象。接下來,我們將這個JSON對象序列化為JSON字符串。我們可以使用rapidjson的Writer類將JSON對象寫入一個StringBuffer中,然后從中取出JSON字符串。下面的代碼實現了這個功能:
rapidjson::StringBuffer buffer; rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); doc.Accept(writer); std::string json_str = buffer.GetString();
至此,我們已經成功地將一個包含鍵值對和數組的JSON對象轉化為了JSON字符串。