当前位置:网站首页>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
边栏推荐
猜你喜欢

韦东山 数码相框 项目学习(四)简易的TXT文档显示器(电纸书)

视觉横向课题bug1:FileNotFoundError: Could not find module ‘MvCameraControl.dll‘ (or one of it

模型的推理速度
![[concurrent programming series 9] priorityblockingqueue, delayqueue principle analysis of blocking queue](/img/2b/1bfadbffad33f8560357fab74e8308.png)
[concurrent programming series 9] priorityblockingqueue, delayqueue principle analysis of blocking queue
![[high concurrency] interviewer](/img/50/baa662cb4ce30cf2ef4cb5952960dd.jpg)
[high concurrency] interviewer

Auto Encoder(AE),Denoising Auto Encoder(DAE), Variational Auto Encoder(VAE) 区别

A photo breaks through the face recognition system: you can nod your head and open your mouth, netizens

AE 3D particle system plug-in: Trapcode particle

12. Optimization problem practice

【11】二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
随机推荐
韦东山 数码相框 项目学习(四)简易的TXT文档显示器(电纸书)
[first song] rebirth of me in py introductory training (6): definition and application of functions
QGIS系列(1)-QGIS(server-apache) win10安装
Pix2Pix原理解析
Cesium教程 (1) 界面介绍-3dtiles加载-更改鼠标操作设置
19. Up and down sampling and batchnorm
物联网操作系统
神经网络参数初始化
Can it replace PS's drawing software?
对于windows下的Redis,只能读不能写的问题
6. Dimension transformation and broadcasting
【头歌】重生之机器学习-线性回归
【头歌】重生之我在py入门实训中(5):列表
【头歌】重生之CNN图片分类基础
C语言-程序的编译
14. Example - Multi classification problem
剪枝-量化-转onnx中文系列教程
【Arduino】重生之Arduino 学僧(1)
Day 3. Suicidal ideation and behavior in institutions of higher learning: A latent class analysis
【头歌】重生之我在py入门实训中(10): Numpy