json实例化
//头文件
#include"json.hpp"
using json=nlohman::json; //nlohman::json用json替代
#include<map>
//json实例化1
//json可以看作是map的数据结构,保存键值对,另一边可以是数字,也一时字符串,也可以是数组
json js;
js["msg_type"]=2;
js["form"]="zhangsan";
js["to"]="lisi";
js["msg"]="hello world";
//发送数据
//json数据对象 -> 序列化 json字符串
string sendBuf=js.dump();
cout<<sendBuf<<endl;
//json实例化2
json js;
//添加数组
js["id"]={1,2,3,4,5};
//添加key——value
js["name"]="zhangsan";
//添加对象
js["msg"]["zhangsan"]="hello world";
js["msg"]["liushuo"]="hello china";
//上面等同于下面这句 一次性添加数组对象
//json的value是字符串数组,里面也可以看作是json,json字符串套json字符串
js["msg"]={{"zhangsan","hello world"},{"liushuo","hello china"}};
//json实例化3,序列化容器
josn=js;
//直接序列化一个vector容器
vector<int>vc;
vc.push_back(1);
vc.push_back(2);
vc.push_back(3);
vc.push_back(4);
js["list"]=vc;
//直接序列化一个map容器
map<int,string>m;
m.insert({1, "zhangsan"});
m.insert({2, "zhangsan"});
m.insert({3, "zhangsan"});
json["path"]=m;
string sendBuf=js.dump();
cout<<sendBuf<<endl;
json反序列化
string recvBuf=func();//接受返回的字符串,上面没有写具体的func();
//第一个序列化的反序列化
//数据的反序列化,json字符串 -> 反序列化数据对象(可以看作容器,方便访问)
json jsbuf=josn::parse(recvBuf);
cout<<jsbuf["msg_type"]<<end;
cout<<jsbuf["from"]<<end;
cout<<jsbuf["to"]<<end;
//第二个序列化的反序列化
cout<<jsbuf["id"]<,endl;
auto arr=jsbuf["id"];
cout<<arr[2]<<endl;
//第三个序列化的反序列化
//json对象里面的数组类型,直接仿佛vector容器中
vector<int> vec=jsbuf["list"];
for(int &v:vec){
cout<<v<<' ';
}