C++之通信数据交换JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语言的一个子集,但采用完全独立于语言的文本格式,这些特性使得JSON成为理想的数据交换语言。

优点如下:

  1. 数据序列化: 在发送数据前,将复杂的数据结构(如对象或数组)转换(序列化)为JSON格式的字符串。这一点在Web开发中尤为重要,因为HTTP协议通常用于传输文本数据。

  2. 跨语言交换: JSON格式独立于任何编程语言,大多数现代编程语言都提供了解析JSON的工具。这意味着一个用Java编写的服务器可以发送JSON数据给一个用JavaScript编写的Web客户端,客户端可以轻松理解和处理这些数据。

  3. API接口: 许多Web API使用JSON格式来提供公共接口,让开发者可以访问其数据和功能。这促进了不同服务之间的集成,因为开发者只需了解如何处理JSON数据即可与这些API交互。

  4. 网络效率: 相比其他数据表示方式(如XML),JSON通常更加紧凑,可以减少网络传输的数据量,因此通信更快。

  5. 易于解析和生成: JSON的结构简单,易于编程语言解析和生成,这使得基于JSON的数据传输在编程中易于实现。

在C++的网络通信中,JSON是很普遍的,尤其是写接口时,接口文档里普遍是JSON,简洁易于理解,还在用XML的,基本是过时的技术了。

1.与http通信时

与http通信时,在HTTP请求的上下文中,https://mp.csdnmm.net/mp_blog/creation/editor/139330424 是一个URL(统一资源定位符),它指向一个特定的网络资源

根据URL,就可以定位到发送请求的位置,从而传递到body中附带json参数给网页,或者根据指定接口的参数获取网页中的数据。

2.与tcp通信时

在tcp通信中,没有URL这种指定,所以在传递的json数据中,需要添加一个方法,用于接收这个tcp的客户端/服务器解析,从而区分请求的方法

如在一个心跳检测接口中tcp发送的json参数如下:

{"method": "heartbeatCheck","timeStamp": 94877257833
}

如在一个控灯接口中tcp发送的json参数如下:

{"method": "ControlLight","data": {"type": 1,"state": 0,"color": 2,"position": [{"row": 1,"column": 2}]}
}

然后相互通信的服务器/客户端就可以根据method这个参数,判断指定请求,就相当于URL了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C、C++编译工具】CLion工具介绍与安装

一、问题 最近突发奇想想学学最开始接触的语言C,之前大学的时候用的更多的工具还是VC,工作后慢慢接触了CLion,跟pycharm其实差不多,都是集成开发环境(IDE) 解释:什么是 IDE? 根据计…

2024年5月 | deepin 深度应用商店-应用更新记录

新增应用 序号应用名称deepin 系统版本应用分类应用类型1HitPaw Watermark Removerdeepin V23图形图像wine2PDF to DOCX转换器deepin V23网络应用linux3天工 AIdeepin V20.9效率办公linux4稻壳阅读deepin 20.9 deepin V23效率办公linux5讯飞星火deepin V20.9效率办公linux6文…

扩散模型的技术原理和应用价值

引言 一、扩散模型的基本概念 扩散模型(Diffusion Models)是一种基于概率论的生成模型,最初源自物理学中的扩散过程理论,比如墨水在水中的扩散过程。在机器学习领域,这一概念被创造性地应用于数据生成任务,特别是图像和声音的合成…

Proxmox Backup Server 命名空间使用

作者:田逸(formyz) Proxmox Backup Server(一下统称PBS)从2.2版本开始,新增了命名空间这样一个功能。这个功能大大便利了多Proxmox VE集群或者单节点备份,在以前PBS版本中,如果有多个…

17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波

1、创建信号 1)创建正余弦信号、噪声信号和混合信号 原始正余弦信号公式:Signal1= sin(2*pi*20* t) + sin(2*pi*40* t) + sin(2*pi*60* t) 高斯分布的白噪声:NoiseGauss= [randn(1,2000)] 均匀分布的白噪声:[rand(1,2000)] 正余弦信号、噪声信号和混合信号代码: N =…

vue项目路由跳转后上一页面未完成的接口取消请求

vue项目路由跳转后上一页面未完成的接口取消 一、 需求 在路由跳转后,如果上一个页面未完成的接口请求,需要取消掉。 比如: 页面A请求接口A,页面B请求接口B。从页面A跳转到页面B,如果接口A未完成,需要取消…

HTML旋转照片盒子

效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content…

世界的本质是旋转(9) 利用声波传输mFSK多音调频文本

在上一篇文章中 &#xff0c;主要介绍的是使用专用的业余无线电设备传输调相波形。 对于买不起SDR设备的学生来说&#xff0c;可以使用这篇文章介绍的思路&#xff0c;使用声卡的数据线传输IQ路的基带数据。线路输入的好处&#xff1a; 不经过空气的媒介&#xff0c;波形的本…

江苏省汽车及零部件产业协作配套对接会在苏州举行

5月28日&#xff0c;江苏省汽车及零部件产业协作配套对接会暨“百场万企”大中小企业融通对接活动在苏州举办。本次活动以“深化整零协作&#xff0c;促进大中小企业融通发展”为主题&#xff0c;由江苏省工业和信息化厅、中国中检所属中国汽车工程研究院股份有限公司&#xff…

分享7个手机上堪称神器却鲜为人知的小众宝藏软件

分享7个手机上堪称神器却鲜为人知的小众宝藏软件&#xff0c;保证大家用过就舍不得卸载~ 1.志愿大师 马上就是高考季了&#xff0c;高考完的同学如果不知道该如何选专业&#xff0c;可以用这个软件来分析各个大学和专业设置等信息。 志愿大师是一款专为高考后学生设计的高效辅…

Others - 网友都是些人才,哈哈哈哈

感谢万能的网友们&#xff01; 原本枯燥的知识&#xff0c;在网友生动形象的表达下&#xff0c;也能简单易懂&#xff0c;哈哈哈哈

Prometheus+Altermanager实现钉钉告警

PrometheusAltermanager实现钉钉告警 Prometheus和Altermanager的安装这里就不赘述了&#xff0c;我之前的文章有写到 不记得的小伙伴可以去看看Prometheus和Altermanager的安装使用 直接开始上操作 下载钉钉并打开&#xff0c;先创建一个接收告警信息的钉钉群 添加一个自定…

【Nacos_bugs】java.lang.IllegalStateException: Failed to load ApplicationContext

报错原因 找不到配置文件。 Bug 排查 如果使用 Nacos 管理配置文件&#xff0c;需要检查本地 bootstrap.yml 配置是否出现问题&#xff1a; 检查点&#xff1a; 检查 Nacos 服务的地址有没有配置错误&#xff0c;如上图 ①&#xff0c;格式严格为 IP:端口号" 检查 D…

Ant Design Vue Pro流程分析记录

一、基本介绍 Ant Design Vue Pro提供了一套完整的解决方案&#xff0c;包括路由、状态管理、UI组件库、HTTP请求封装等&#xff0c;方便开发者快速搭建和维护企业级应用。 二、官网地址 Ant Design Pro of Vue 三、下载及安装 推荐使用Yarn 四、文件分布及说明 dist&#xf…

常见Rabbitmq面试题及答案总结

1、 什么是 rabbitmq 釆用AMQP高级消息队列协议的一种消息队列技术撮大的特点就是消费并不需要 确保提供方存在,实现了服务之间的高度解耦 2、 为什么要使rabbitmq &#xff08;1&#xff09; 在分布式系统下具备异步&#xff0c;削峰&#xff0c;负载均衡等一系列高级功能&…

企业百度百科如何修改

百度百科是一个可以让我们快速的了解一个企业情况的地方&#xff0c;同时也让我们的企业展示了什么&#xff0c;还有哪些是可以做的。 注册与登录 首先&#xff0c;你需要注册一个百度账号&#xff0c;并通过邮箱或手机进行验证。登录后&#xff0c;可以开始创建或编辑百度百科…

Leetcode - 周赛400

目录 一&#xff0c;3168. 候诊室中的最少椅子数 二&#xff0c;3169. 无需开会的工作日 三&#xff0c;3170. 删除星号以后字典序最小的字符串 四&#xff0c;3171. 找到按位与最接近 K 的子数组 一&#xff0c;3168. 候诊室中的最少椅子数 本题是一道模拟题&#xff0c;直…

归并排序法

归并排序法是典型的分治算法应用&#xff0c;1946年由冯.诺伊曼发明。 算法思路&#xff1a;归并排序算法有两个基本操作&#xff0c;一是分&#xff0c;也就是把原数组划分成两个子数组的过程&#xff0c;另一个是治&#xff0c;它将两个有序数组合并成一个更大的有序数组。 …

基于小波区间相关的信号降噪方法(MATLAB 2021B)

在我们处理信号过程中最重要的任务就是找到信号隐藏的规律和信号的特征。常用的傅里叶分析法只能用于在时间域或者频率域上分析信号&#xff0c;而通常的数据会在时间域和频率域均有特征。而小波分析是继傅里叶分析之后的一大突破性创新&#xff0c;也是近年来在学术界非常热门…

JMeter源码解析之NewDriver.java(一)

JMeter源码解析之NewDriver.java&#xff08;一&#xff09; NewDriver.java主要作用 JMeter程序入口&#xff1a;JMeter的主类-设置初始类路径和加载程序。 文件路径 路径地址&#xff1a;…\apache-jmeter-5.1\src\core\org\apache\jmeter\NewDriver.java 文章重点关于s…