C++是一門強類型的編程語言,而JSON是一種輕量級的數據交換格式,相互之間數據類型的差異自然不能避免。序列化就是將C++對象轉換成JSON字符串,方便數據的傳輸和存儲。下面我們來講述如何使用C++的庫來序列化JSON字符串。
我們使用 C++ 庫 RapidJSON 來完成C++類序列化JSON字符串。
#include "rapidjson/document.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" #include <iostream> using namespace rapidjson; using namespace std; class Person { public: string name_; int age_; Person() {} Person(string name, int age) : name_(name), age_(age) {} void Serialize(Writer<StringBuffer>& writer) const { writer.StartObject(); writer.String("name"); writer.String(name_.c_str()); writer.String("age"); writer.Int(age_); writer.EndObject(); } }; int main() { Person p("Tom", 21); StringBuffer s; Writer<StringBuffer> writer(s); p.Serialize(writer); cout << s.GetString() << endl; return 0; }
上面的代碼展示了如何使用 RapidJSON 庫將一個自定義的 Person 類序列化成 JSON 字符串。其中,Person 類必須提供一個 Serialize 函數,將當前對象的狀態寫入給定的 rapidjson Writer 對象。這個 Serialize 函數是核心,可以在此函數中自定義要序列化的對象類型、字段名和數據類型。
以上就是如何在C++中使用 RapidJSON 序列化 JSON 字符串的方法,有了這個方法以后,再也不需要擔心C++數據和JSON數據不兼容問題了。