当前位置: 首页 > article >正文

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

目录

  • 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;
}

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


http://www.kler.cn/a/393149.html

相关文章:

  • 三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测
  • 从0开始学习Linux——文件管理
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?
  • 微服务day07
  • Springboot 日志处理(非常详细)
  • CommandLineParser 使用
  • android studio中按钮提示Hardcoded string “XX“, should use `@string` resource
  • 【windows 下使用 tree】
  • sql专题 之 where和join on
  • AI数字人使用的技术及应用场景
  • 卷积神经网络CNN——卷积层、池化层、全连接层
  • ubuntu 安装kafka-eagle
  • 遗传算法与深度学习实战——利用进化计算优化深度学习模型
  • 麒麟V10,arm64,离线安装docker和docker-compose
  • 【react】React Router基础知识
  • Rust编程与项目实战-函数指针
  • 案例学习java
  • AI大模型开发架构设计(18)——基于大模型构建企业知识库案例实战
  • 24年下软考网络工程师真题及答案,估分、备考速看!
  • React第一个项目
  • 【Lucene】详细讲解创建索引的步骤:分词、去停用词、语言处理、倒排表构建
  • 深入了解支持向量机:机器学习中的经典算法
  • Ue5 umg学习(三)文本控件
  • 交互新体验:Axure动态面板下的图片拖动技巧
  • 统信UOS开发环境支持rust
  • 计算机网络:运输层 —— TCP 协议概述与 TCP 报文段首部格式