集群聊天服务器(2)Json介绍

目录

大家之间交流用json,想要发送数据,就把数据序列化成json,想要接收数据,就反序列化成自己程序的语言。

Json序列化

可以直接赋值一个容器对象

js['xx']=vec;

cpp 复制代码
#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;
}

转成字符串,就可以通过网络发送

cpp 复制代码
#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形式还可以像是二维数组一样,键值对里面套键值对

cpp 复制代码
#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反序列化

cpp 复制代码
#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;
}

json.hpp非常轻量,比任何第三方库都好用。做json的序列化和反序列化,能够直接将stl容器和json画等号。

相关推荐
云边云科技_云网融合2 分钟前
大模型聚合时代:云边云科技 AI 网关轻量化赋能企业落地
大数据·运维·网络·人工智能
Waay12 分钟前
MySQL基础高频考点
运维·mysql·adb
yzwlord28 分钟前
【无标题】
linux·运维·rust·ssh
晚风_END29 分钟前
Linux|操作系统|最新版zfs编译后的适用于centos7的rpm安装包完全离线安装介绍
linux·运维·服务器·c++·python·缓存·github
KaMeidebaby33 分钟前
卡梅德生物技术快报|单克隆抗体人源化 PEG 修饰质控方法体系构建与验证
服务器·前端·数据库·人工智能·算法·百度·新浪微博
銳昊城36 分钟前
项目八: 配置与管理FTP服务器(3) C3
运维·服务器
网络与设备以及操作系统学习使用者37 分钟前
ARP报文保护触发与解决详解
运维·网络·学习·华为
(Charon)40 分钟前
【C++/Qt】Qt 网络工具中的输入校验设计:IP、端口、URL 和空内容判断
服务器·c++·tcp/ip
MXsoft61841 分钟前
**监控告警优化:告别告警风暴,精准定位故障根源**
运维
jran-44 分钟前
Docker 数据卷&应用部署
运维·docker·容器