简单理解什么是序列化

这篇具有很好参考价值的文章主要介绍了简单理解什么是序列化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么要序列化

序列化的目的就是为了对象可以在网络层进行传输,
比如通过后端传给前端数据。

什么是序列化

我们以Java为例。

序列化就是把对象转化为可传输的字节序列过程,这个字节序列可以是字符串,比如JSON格式的字符串,把内存中的java对象转化成JSON格式的字符串的过程,就是序列化的过程。

为什么转化成字符串就算是序列化呢?

因为字符串实现了
Serializable接口,实现了Serializable接口的类,便可以通过网络层进行传输(序列化的目的就是为了在网络层进行传输)。
简单理解什么是序列化
由此可见,String类实现了Serializable接口,其实你也可以自己创建一个类,去实现这个接口,然后你的类的对象也就完成了序列化,可以直接通过网络层进行传输,然而这种方式我们通常不建议,因为。

直接使用 java.io.Serializable 接口传输对象需要确保参与方都能识别和解析序列化格式,并具有相同的对象类定义,否则可能会出现兼容性问题。此外,由于序列化对象会增加数据传输量和复杂度,因此对于大型或频繁传输的数据,使用 JSON 格式传输会更加高效。

当然,这并不代表 java.io.Serializable 接口在网络传输中没有应用场景。实际上,在某些特定的应用场景中,如果需要精细地控制对象的序列化过程、保护数据安全性等,使用 java.io.Serializable 接口传输对象可能更为合适。

但是我们一般都采用JSON格式的字符串的方式来完成对象的序列化,以达到从后端向前端通过网络来进行传输的目的。

哪些对象是我们需要进行序列化的?

我想说的是,你希望传输的Java对象是需要进行序列化的。你也许会说这不废话吗,我要从网络层传输,当然要序列化。

但是有些类的对象java已经帮我们序列化好了,比如

  1. java.lang.String: 字符串对象可以被序列化,这意味着可以在客户端和服务器之间轻松传输字符串。

  2. java.lang.Integer、java.lang.Double 等基本类型的封装类: 基本类型的封装类可以被序列化,这意味着可以在客户端和服务器之间轻松传输数字。

  3. java.util.Date: 日期对象可以被序列化,这使得在需要将数据存储到数据库中时,可以更轻松地直接将对象写入数据库。

  4. java.util.List、java.util.ArrayList、java.util.HashMap等集合类: 常用的集合类也可以被序列化,这意味着可以轻松地在客户端和服务器之间传递列表和映射集。

  5. java.io.Serializable: Serializable 接口的实现类可以被序列化,如 java.net.Socket、java.net.URL 等网络相关的类。

等等等等,总而言之,判断一个自带的Java类有没有被序列化,你就点进去看看有没有实现Serializable 接口

这些都不需要我们进行序列化,需要我们进行序列化的是我们自己创建的java对象,因为我们自己创建的Java对象通常是不实现Serializable 接口的。此时我们通常就会把他转化成JSON格式的字符串进行传输。

采用JSON格式的字符串进行传输优点如下

  • 通用,现在主流的前后端交互,均使用JSON格式的字符串来进行前后端数据的传输
  • 灵活,JSON字符串可以表示各种复杂的数据结构,对象啊,数组啊,集合啊等等,可以随意嵌套使用

如何序列化为JSON格式的字符串

我们通常采用外部的框架来进行实现,常见的可以把一个Java对象转化成JSON格式的字符串的框架有alibaba的fastjson。

即使有些已经进行了序列化比如HashMap等,我们在传输的过程中有时候遵循前后端通过JSON数据传输的规范,我们依然把他转化成JSON字符串来传输,尽管一个HashMap的对象已经支持序列化,可以直接传输。

将fastjson引入到pom依赖文件中

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.80</version>
        </dependency>

在你需要进行序列化的地方直接调用JSONObject.toJSONString方法,把对象传入就可以完成把对象转化成JSON格式的字符串的过程,此时这个字符串就可以通过网络任意传输了,因为字符串本身是支持序列化。

代码看不懂没关系,只在意红框里的内容就行。
简单理解什么是序列化

到此,序列化就讲完了,想必你对序列化也有了一定的认识。

感谢观看💕文章来源地址https://www.toymoban.com/news/detail-432651.html

到了这里,关于简单理解什么是序列化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity | 序列化(Serialized)和反序列化(NonSerialized)是什么意思

    一、什么是序列化 官方叙述: 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。 人话叙述: 我们平时输入的代码,实际上是不能储存或者传输的,所以我们需要翻译一下,翻译成能储存或者翻译的文字,这个翻译的过程叫做序列化。 二、什么要序列化 问题

    2024年02月11日
    浏览(48)
  • [Linux] 初识应用层协议: 序列化与反序列化、编码与解码、jsoncpp简单使用...

    有关Linux网络, 之前的文章已经简单演示介绍了 UDP 、 TCP 套接字编程 相关文章: [Linux] 网络编程 - 初见UDP套接字编程: 网络编程部分相关概念、TCP、UDP协议基本特点、网络字节序、socket接口使用、简单的UDP网络及聊天室实现… [Linux] 网络编程 - 初见TCP套接字编程: 实现简单的单

    2024年02月15日
    浏览(61)
  • Android : 序列化 JSON简单应用

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和写入,同时也易于机器解析和生成。它基于JavaScript的子集,采用完全独立于语言的文本格式来存储和表示数据。JSON是纯文本,并且完全是语言无关的。 JSON使用JavaScript语法来描述数据结构,但实际上JSON所

    2024年02月04日
    浏览(34)
  • C#: Json序列化和反序列化,集合为什么多出来一些元素?

    如下面的例子,很容易看出问题: 如果类本身的无参构造函数, 就添加了一些元素,序列化,再反序列化,会导致元素增加。 如果要避免,必须添加: new JsonSerializerSettings() { ObjectCreationHandling = ObjectCreationHandling.Replace }

    2024年02月10日
    浏览(55)
  • 又一个难题:Java 序列化和反序列化为什么要实现 Serializable 接口?

    作者:椰子Tyshawn 来源:https://blog.csdn.net/litianxiang_kaola 最近公司的在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值. 听到这个需求, 我脑海里就突然出现了好几个问题, 比如说: 序列化和反序列化是什么? 实现序列化和反序列化为什

    2024年02月08日
    浏览(50)
  • 深入理解 python 虚拟机:破解核心魔法——反序列化 pyc 文件

    在前面的文章当中我们详细的对于 pyc 文件的结构进行了分析,pyc 文件主要有下面的四个部分组成:魔术、 Bite Filed 、修改日期和 Code Object 组成。在前面的文章当中我们已经对前面三个部分进行了字节角度的分析,直接从 pyc 文件当中读取对应的数据并且打印出来了。而在本

    2024年02月05日
    浏览(38)
  • Dubbo默认使用什么序列化框架?

    Dubbo默认使用的序列化框架是Hessian 2.0。Hessian是一种基于二进制的序列化协议,它具有简单、高效的特点,适用于网络传输和存储数据。Hessian在Dubbo中被广泛使用,因为它可以在不同的编程语言之间进行对象的序列化和反序列化。 除了Hessian,Dubbo还支持其他的序列化框架,可

    2024年02月09日
    浏览(32)
  • 【问题】java序列化,什么时候使用

    把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2)在网络上传送对象的字节序列。 一般来说如果你的对象需要网络传

    2024年02月12日
    浏览(32)
  • unity中,什么是序列化资源?

    好的,以下是序列化资源(Serialized Asset)的详细解释,包括介绍、方法和举例: 在Unity中,序列化资源是指将Unity场景或预制件中的对象及其属性保存到磁盘上的文件中,以便在将来将其还原为原始状态。序列化资源文件可以包括场景文件(.unity)和预制件文件(.prefab),它

    2024年02月10日
    浏览(39)
  • Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化

    1.类什么时候被加载到JVM中,new,Class.forName: Class.forName(“包名.类名”); 2.创建对象的方式,反射,本质是获得类的类对象Class; 3.克隆clone,深拷贝,浅拷贝的对比; 4.序列化和反序列化的方式; Hello h; // 此时没有用Hello,jvm并没有进行类加载 看到new : new Book() Class.forName:

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包