json value和streamsusing nlohmann::json;//反序列化(Deserialization):>>json j1;std::cin>>j1;//序列化(Seriralization):<<std::cout<<j1;//上述操作适用于istream和ostream的子类,比如我们经常会用到的ifstream和ofstreamstd::ifstream in(animals.json);//打开文件,关联到流injson animals;in>>animals;animals.at(0)["height"]=60;//修改数据in.close();std::ofstream out(animal.json);//打开文件,关联到流outout<<std::setw(4)<<animals;//输出信息,std::setw(4)用于设置增加打印空格out.close();json value和自定义对象在自定义对象命名空间中定义两个函数即可像basic value一样进行反序列化和序列化:from_json(const json& j,T& value)、to_json(json& j,const T& value)
//Animal.h文件//定义Animal类,其包含两个成员变量kind与heightusing nlohmann::json;class Animal{public:Animal(std::string kind,double height){this->kind=kind;this->height=height;}std::string kind;double height;}//定义from_json(const json& j,T& value)函数,用于序列化void from_json(const json& j,Animal& animal){animal.kind=j["kind"].get<std::string>();animal.height=j["height"].get<double>();}//定义to_json(json& j,const T& value)函数,用于反序列化void to_json(json& j,const Animal& animal){j["kind"]=animal.kind;j["height"]=animal.height;}//main.cpp文件int main(){Animal animal{"dog",50};nlohmnn::json j=animal;//像basic value一样将自定义对象赋值给json valuej["height"]=60;//修改数据Animal animalNew = j.get<Animal>();//像basic value一样通过get函数获取值,将其值直接赋值给自定义对象std::cout<<animal.height;//输出60return 0;}
推荐阅读
- 取代C++!微软正在改用Rust语言重写Win11内核
- C++ 自适应函数符和函数适配器
- 为什么要让孩子学习C++呢?让我来告诉你!
- C++中的HashTable性能优化
- 什么是Json(javajson)
- 什么是善(传统文化中对善的理解)
- C++23已完成,C++26来了
- C++如何创建窗口程序?Windows API永不过时
- C++新特性 nullptr 和 constexpr
- 少女时代mv__少女时代黑海事件 、在某综艺节目中对神话成员未用敬语、被歌迷发现随意丢弃歌迷信件,这些都是真的吗
