当前位置:网站首页>C# Json编码在TCP通讯中的一些使用总结
C# Json编码在TCP通讯中的一些使用总结
2022-07-27 05:20:00 【月光在发光】
Json的使用
1、通过管理Nunet程序包,下载Newtonsoft.Json.DLL程序集
2、程序中导入包;
using Newtonsoft.Json;
3、创建需要序列化的类,设计类中的属性结构,封装,构造
4、序列化
写法如下:
string r= JsonConvert.SerializeObject(new 类名(根据构造填入对应的属性值));
序列化的字符串结构如下:
反序列化写法如下:
string UserJson = "{\"UNO\":\"1\"," +
" \"UName\":\"龙\"," +
" \"Uage\":\"21\"," +
" \"Uaddress\":\"中国\"," +
" \"Uphone\":\"151 3692 3546\"}";
User Data = JsonConvert.DeserializeObject<User>(UserJson);
Json的使用心得
在具体项目中使用的时候,作为接收方,我接收到的数据大都是对方根据一个格式文档,进行编写发送给我的,这本来没有什么问题。但是在仔细观察格式文档中发送指令的格式,会发现有一些相同的字段,例如指令码,机器码,设备地址等字段。但是有不完全相同。只能说具有相同意义的字段名是一样的。
于是,想着在序列化和反序列化的时候,他们对应的对象所具有的属性如果不一样会怎么样。
经过一系列的测试,得出以下结果:
1、发送方序列化的对象所包含的属性大于且包含接收方反序列化所对应的对象属性的时候,反序列化的对象只会提取相同字段的值并返回。
2、发送方序列化的对象所包含的属性小于接收方反序列化所对应的对象属性的时候,反序列化的对象同样只会根据对应的字段初始化对应的字段的值并返回。
结论,接收方不需非要设置一个和发送方相同的一个类来反序列化,只需要根据需要设置一个想要获得字段的类即可。
由于在项目中,我需要接收不同具有相同字段的指令,所以我将所有指令中所有可能用到的属性全部都放到一个类中作为属性,这样就可以用一个类来反序列化不同的指令。(我可真是一个小机灵鬼)这样就不用根据对应的指令设置不同的类来反序列化指令,减少了项目的复杂度。
具体代码链接
百度云盘:TCP.rar.
bsqy
介绍:该代码是一个测试TCP通讯的一个小例子,通讯之间的数据经过Json编码进行序列化之后发送,接收方经过反序列化解析指令中的内容。
工具:VS2017
边栏推荐
- pytorch转onnx相关问题
- Baiwen driver Daquan learning (I) LCD driver
- 发布 分辨率0.22m的建筑物分割数据库
- 4. Tensor data type and creation tensor
- std::bind与std::function的一些应用
- Greedy high performance neural network and AI chip application research and training
- [first song] rebirth of me in py introductory training (2): formula programming
- 编程学习记录——第6课【函数】
- Super remote connection management tool: Royal TSX
- 【头歌】重生之我在py入门实训中(9):异常处理
猜你喜欢

Pix2Pix原理解析

Greedy high performance neural network and AI chip application research and training

pytorch使用data_prefetcher提升数据读取速度

Chrome 如何快速将一组正在浏览的网页(tabs)转移到另一台设备(电脑)上

Live Home 3D Pro interior home design tool

【5·20特辑】MatLAb之我在和你表白

为什么交叉熵损失可以用于刻画损失

arcgis for js api(2) 获取要素服务的id集合

10. Gradient, activation function and loss

Multi task foundation of IOT operating system
随机推荐
STM32-红外遥控
韦东山 数码相框 项目学习(一)在LCD上显示ASCII字符
When multiple formulas in latex share a sequence number
12. Optimization problem practice
19. Up and down sampling and batchnorm
[concurrent programming series 9] priorityblockingqueue, delayqueue principle analysis of blocking queue
C语言--字符串操作函数与内存操作函数
[Haowen planting grass] knowledge of root domain name - Ruan Yifeng's Weblog
向量和矩阵的范数
2022.6.10 STM32MP157串口时钟的学习
Cmder的基础文件操作
百问网驱动大全学习(一)LCD驱动
Pix2Pix原理解析
[song] rebirth of me in py introductory training (9): exception handling
制作视频后期特效需要什么工具?
视觉横向课题bug1:FileNotFoundError: Could not find module ‘MvCameraControl.dll‘ (or one of it
pytorch转onnx相关问题
arcgis style样式表文件转换成geoserver sld文件
物联网操作系统多任务基础
文件的路径