个人备案的网站可以做商城,商业广告公司排名,皮带哥 长沙,wordpress手机号网站使用nlohmann的库
“安装”
把include下载到本地可以include的位置
demo
需要再struct和class中实现to_json()和from_json()函数。 貌似cpp20可以通过反射无需手动编写to_json()和from_json()#xff0c;这里不做展开 #include iostream
#include nlohmann/…使用nlohmann的库
“安装”
把include下载到本地可以include的位置
demo
需要再struct和class中实现to_json()和from_json()函数。 貌似cpp20可以通过反射无需手动编写to_json()和from_json()这里不做展开 #include iostream
#include nlohmann/json.hppusing nlohmann::json;struct Dog {std::string Name;// to_json 和 from_json 需要在同一命名空间下void to_json(json j){j[Name] Name;}void from_json(const json j){j.at(Name).get_to(Name);}
};struct Phone {std::string Ptype;int Pnum;// to_json 和 from_json 需要在同一命名空间下void to_json(json j){j {{Ptype, Ptype},{Pnum,Pnum}};}void from_json(const json j){j.at(Ptype).get_to(Ptype);j.at(Pnum).get_to(Pnum);}
};struct User {std::string Name;int Age;std::mapstd::string, int Score;std::mapstd::string, Dog Pets;Phone MPhone;// to_json 和 from_json 需要在同一命名空间下void to_json(json j){j json{{Name, Name}, {Age, Age}};MPhone.to_json(j[MPhone]); // 对象属性to_jsonfor (auto pair : Pets) {pair.second.to_json(j[Pets][pair.first]); // map对象}for (const auto pair : Score) { // mapintj[Score][pair.first] pair.second;}}void from_json(const json j){j.at(Name).get_to(Name);j.at(Age).get_to(Age);if(j.contains(Pets)){for (const auto pair : j.at(Pets).items()) {Pets[pair.key()] Dog();Pets[pair.key()].from_json(pair.value());}}for (const auto pair : j.at(Score).items()) { Score[pair.key()] pair.value(); }}void from_json(std::string json_str){json j json::parse(json_str);from_json(j);}
};int main(){User user;user.Name zhangsi;user.Age 25;Phone p{Mi, 1234};user.MPhone p;user.Score[math] 88;user.Score[art] 89;user.Pets[大黄] Dog{大黄};user.Pets[小黑] Dog{小黑};json j;user.to_json(j);std::cout to_json: j.dump() std::endl;std::cout to_json with indent:\n j.dump(4) std::endl;User new_user;new_user.from_json(j);std::cout \n\nuser from json: User\nName: new_user.Name \nAge: new_user.Age std::endl;}