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

ops/2024/11/18 2:09:49/

目录

  • 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.ppmy.cn/ops/134599.html

相关文章

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具 文章目录 python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具项目背景技术栈用户界面核心功能实现结果展示完整代码总结 在现代软件开发中&#xff0c;测试接口的有效性与响应情况变得尤为重要。本文将指导…

Android LiveData 处理数据倒灌的几种措施

LiveData MutableLiveDataSingleLiveEventUnFlowLiveDataUnPeekLiveData扩展1. 为什么Fragment中要使用viewLifecycleOwner代替this2. 如果使用了Fragment的this&#xff0c;有可能产生的问题 参考地址 MutableLiveData 粘性特性 定义 MutableLiveData的粘性特性是指当一个观察…

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)

引言&#xff1a;对于嵌入式硬件这个庞大的知识体系而言&#xff0c;太多离散的知识点很容易疏漏&#xff0c;因此对于这些容易忘记甚至不明白的知识点做成一个梳理&#xff0c;供大家参考以及学习&#xff0c;本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…

信捷PLC转以太网连接电脑方法

信捷XC/XD/XL等系列PLC如何上下载程序?可以选择用捷米特JM-ETH-XJ模块轻松搞定,并不需要编程&#xff0c;即插即用&#xff0c;具体看见以下介绍&#xff1a; 产品介绍 捷米特JM-ETH-XJ是专门为信捷PLC转以太网通讯面设计&#xff0c;可实现工厂设备信息化需求&#xff0c;对…

java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动

在这篇文章中&#xff0c;我们将学习如何使用Java编程语言模拟键盘输入&#xff0c;特别是模拟上下左右方向键的操作。这是一个很有趣的项目&#xff0c;尤其适合刚入行的开发者。我们将分步进行&#xff0c;接下来&#xff0c;我们会通过表格展示整个实现过程&#xff0c;然后…

cocosCreator视频web模式播放踩坑解决

/*** 对外输出接口*/ export interface VideoPlayerManageInterface {//初始化视频播放器init(list: VideoPlayerManageInitListType[],options?: VideoPlayerManageInitOptionsType): Promise<void>;//播放视频play(url: string, currentTime?: number): Promise<v…

C语言入门到精通(第六版)——第十六章

16、网络套接字编程 16.1、计算机网络基础 计算机网络技术是计算机技术和通信技术相结合的产物&#xff0c;代表计算机的一个重要发展方向。了解计算机的网络结构&#xff0c;有助于用户开发网络应用程序。 16.1.1、IP地址 为了使网络上的计算机能够彼此识别对方&#xff0c;…