Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简介和清晰的层次结构使得Json成为理想的交换格式。易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
跟XML相比,Json的优势在于格式简介短小,特别是在处理大量复杂数据的时候
Json是一个优秀的第三方库。其中JSON OF MODERN C++是由德国大牛nlohmann编写的,所以命名空间的名字也是nlohmann。
Json源码:点此跳转
对象是一个无序的“‘名称/值’ 对”集合。
数组是值的有序集合。值可以使双引号括起来的字符串、数值、true、false、null、对象和数组。当然,也可以套娃
使用就简单的包含以下头文件,就可以使用 json 提供给我们的接口了。
#include"json.hpp" using json = nlohmann::json;序列化就是把我们想要打包的数据或者对象直接处理成Json字符串。
普通数据序列化
void func1() { json js; js["msg_type"] = 2; js["form"] = "zhang san"; js["to"] = "li si"; js["msg"] = "hello,world!"; cout << js << endl; } 输出如下: {"msg":"hello,world!","form":"zhang san","msg_type":2,"to":"li si"} 可以看到,是无序的容器序列化
void func3() { json js; //序列化一个容器 vector<int> vec; vec.push_back(1); vec.push_back(2); js["list"] = vec; map<int, string> m; m.insert({ 1,"华山" }); m.insert({ 2,"泰山" }); js["path"] = m; cout << js << endl; } 输出如下: {"list":[1,2],"path":[[1,"华山"],[2,"泰山"]]}转化成字符串
//转成字符串,网络用 string sendbuf = js.dump(); cout << sendbuf.c_str() << endl;