目录
- Json序列化
- Json反序列化
大家之间交流用json,想要发送数据,就把数据序列化成json,想要接收数据,就反序列化成自己程序的语言。
Json序列化
可以直接赋值一个容器对象
js[‘xx’]=vec;
#include "json.hpp"
using json=nlohmann::json;
#include <iostream>
#include <vector>
#include <map>
using namespace std;//json序列化示例1
void func1(){json js;js["msg_type"]=2;js["from"]="zhang san";js["to"]="li si";js["msg"]="hello,what are you doing now?";cout<<js<<endl;
}int main(){func1();return 0;
}
转成字符串,就可以通过网络发送
#include "json.hpp"
using json=nlohmann::json;
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;//json序列化示例1
void func1(){json js;js["msg_type"]=2;js["from"]="zhang san";js["to"]="li si";js["msg"]="hello,what are you doing now?";string sendBuf=js.dump();cout<<sendBuf.c_str()<<endl;
}int main(){func1();return 0;
}
还可以放数组,json形式还可以像是二维数组一样,键值对里面套键值对
#include "json.hpp"
using json=nlohmann::json;
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;//json序列化示例1
void func1(){json js;js["id"]={1,2,3,4,5};js["msg_type"]=2;js["from"]="zhang san";js["to"]="li si";js["msg"]["zhang san"]="hello world";js["msg"]["liu shuo"]="hello china";cout<<js<<endl;
}int main(){func1();return 0;
}
Json反序列化
#include "json.hpp"
using json=nlohmann::json;
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;//json序列化示例1
void func1(){json js;js["id"]={1,2,3,4,5};js["msg_type"]=2;js["from"]="zhang san";js["to"]="li si";js["msg"]["zhang san"]="hello world";js["msg"]["liu shuo"]="hello china";cout<<js<<endl;
}string func2(){json js;js["id"]={1,2,3,4,5};js["msg_type"]=2;js["from"]="zhang san";js["to"]="li si";js["msg"]["zhang san"]="hello world";js["msg"]["liu shuo"]="hello china";string sendBuf=js.dump();return sendBuf;}int main(){string recvBuf=func2();//数据的反序列化json jsbuf=json::parse(recvBuf);//返回一个json对象cout<<jsbuf["msg_type"]<<endl;cout<<jsbuf["from"]<<endl;cout<<jsbuf["to"]<<endl;cout<<jsbuf["msg"]<<endl;return 0;
}