在日常開發中,我們經常需要將C++中的類轉化為JSON格式,以便于傳輸和解析。下面介紹兩種常見的實現方式。
方式一:手動序列化
class Person { public: string name; int age; // 序列化函數 Json::Value toJson() { Json::Value json; json["name"] = name; json["age"] = age; return json; } }; // 示例 Person p = {"Tom", 22}; Json::Value json = p.toJson(); cout<< json.toStyledString()<< endl; /* 輸出: { "name": "Tom", "age": 22 } */
手動序列化需要在類中自定義一個toJson函數,將類成員的值寫入到Json::Value類型的對象中。這種方式需要手動維護序列化代碼,更加繁瑣。
方式二:使用第三方庫
// 使用JsonCpp庫 #includeclass Person { public: string name; int age; }; // 序列化函數 namespace Json { void encode(Json::Value& json, const Person& p) { json["name"] = p.name; json["age"] = p.age; } } // 示例 Person p = {"Tom", 22}; Json::Value json; Json::encode(json, p); cout<< json.toStyledString()<< endl; /* 輸出: { "name": "Tom", "age": 22 } */
使用第三方庫可以簡化序列化過程,使代碼更加清晰。這里使用JsonCpp庫作為示例,序列化函數需要在Json命名空間中定義。調用時將類對象傳入函數中即可。