【网络】:序列化和反序列化

序列化和反序列化

    • 一.json库
  • 二.简单使用json库

前面已经讲过TCP和UDP,也写过代码能够进行双方的通信了,那么有没有可能这种通信是不安全的呢?如果直接通信,可能会被底层捕捉;可能由于网络问题,一方只接收到了一部分字符;如果想要实现像QQ那样既能显示ID,又能显示内容该怎么做呢…为了解决一系列问题,就需要我们在应用层制定协议了。而应用层协议的一个大点就是序列化和反序列化。

什么是序列化和反序列化

  1. 序列化和反序列化是将对象转换为字节流或其他格式,以便在网络传输或持久化存储时使用,然后将其重新转换回对象的过程。

  2. 序列化是将对象转换为字节流的过程。这可以通过将对象的状态写入到文件、数据库或网络中来实现。序列化的结果可以是二进制格式、XML格式、JSON格式等。

  3. 反序列化是将字节流或其他格式转换回对象的过程。这可以通过从文件、数据库或网络中读取字节流,并使用相应的反序列化算法来实现。反序列化的结果是重新创建对象,并将其状态恢复为序列化之前的状态。

简而言之:反序列化就是将一字符串转换成特定格式,例如:xxxyyyzz,转换成name=xxx,content=yyy,data=zz等特定结构。序列化就是将特定的结构再转回字符串。

一.json库

简单地说,JSON 可以将 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串.

总而言之就是帮助我们进行序列化和反序列化的库。

类似于:

在这里插入图片描述

注意这是一个字符串。它其实都是类似于key:value的形状,中间用逗号隔开。

安装第三方库

在这里插入图片描述

二.简单使用json库

一个第三方库,它需要给我们提供的是include头文件和.lib库文件,而它们的安装目录一般是固定的。头文件在/usr/include下,库文件在lib64下。

在这里插入图片描述

在这里插入图片描述

简单使用

1.序列化(两种打印方式)

具体流程:创建Value对象,然后像使用hash表那样进行kv操作,最后使用write方法,将其转换成json串。注意在编译时,也要链接第三方库。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:这依然是一个字符串,只是加了\n,让可读性更好。

2.反序列化

实际上与序列化过程差不多,定义一个Value对像和一个Reader对象,然后再依次读出。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值