C++是一種高效、可靠的面向對象編程語言,常被用于開發(fā)大型、復雜的軟件系統(tǒng)。其中的一種類復雜數(shù)據結構,可以被序列化為JSON格式。在本文中,我們將介紹如何在C++中序列化復雜類為JSON格式。
#include <iostream> #include <json.hpp> using json = nlohmann::json; class Student { public: std::string name; int age; std::vector<std::string> hobbies; Student() {} Student(std::string n, int a, std::vector<std::string> h) : name(n), age(a), hobbies(h) {} json toJson() const { return { {"name", name}, {"age", age}, {"hobbies", hobbies} }; } }; int main() { std::vector<Student> students { {"Tom", 19, {"soccer", "basketball"}}, {"Lucy", 20, {"reading", "swimming"}}, {"Jack", 21, {"music", "travelling"}} }; json j; for (auto student : students) { j["students"].push_back(student.toJson()); } std::cout << j.dump() << std::endl; return 0; }
上面的代碼定義了一個Student類,它有三個成員變量:名字、年齡和愛好,還定義了一個toJson()方法,將Student對象轉化為JSON格式。
在主函數(shù)中,我們創(chuàng)建了一個保存Student對象的vector,然后使用for循環(huán)遍歷vector,將每個Student對象序列化為JSON格式后,添加到json對象中。最后使用dump()方法將json對象轉化為字符串并輸出。
運行以上代碼,可以得到如下輸出:
{ "students": [ { "age": 19, "hobbies": [ "soccer", "basketball" ], "name": "Tom" }, { "age": 20, "hobbies": [ "reading", "swimming" ], "name": "Lucy" }, { "age": 21, "hobbies": [ "music", "travelling" ], "name": "Jack" } ] }
可以看到,輸出的JSON格式完整地包含了每個學生的屬性信息,包括名字、年齡和愛好。這個例子展示了如何在C++中使用json庫序列化復雜類為JSON格式,使得數(shù)據能夠被方便地傳輸和存儲。