最近项目上用到了序列化的东西,所以就来总结一下java序列化的一些基础东西,已经google 出的一款可以用于序列话的工具Gson.
一. java 序列化
什么是序列化呢,在java中实际就是用对象转换为字节,在有字节转换为对象的过程.有什么用处呢.
首先是可以进行简单的持久化,你可以把一个对象序列化后放入文件系统中,然后在需要的时候反序列化来恢复这个对象.
其次你可以通过它来保存一个对象的状态
最后是除了clone之外复制对象的另一种方式.
在java中怎么用呢,很简单,只要这个对象实现了Serializable接口就行了
简单列个代码:
首先是个school的对象:
然后是个student 的对象,我为了让它更复杂点让student包含了school的引用.
那么现在我们就来序列化和反序列化他来看下有什么效果:
你可以看到文件里面的信息是这样的:
现在我们来反序列化这个文件.同样是在main方法中加入
结果是:
yecg
10
Chong QING
0001
不光是student,连它里面包含的school也被反序列化出来了.
在我的项目中实际上也有是要用他的对象复制功能,但在效率方面序列化确实要比clone低,但是随着jdk的优化,现在这个差距也是在可以接受的范围之内了,并且他操作简单,所以可以作为clone的另一种替代方案
当然序列化不是这么简单就结束了,比如如果你某个字段不想序列化,那么可以使用transient等.
二 . Gson
Gson是google出的一款工具,它可以方便的把对象转为json,把json转为对象.这有很多用处,比如我们经常用的的ajax,就可以在后台把对象转为json传到前台然后由前台显示.
当然同时它也有序列化的作用,就来简单看下它是如何序列化的
可以看到gson.out文件里是这样的
{"age":10,"school":{"schName":"Chong QING","schCode":"0001"}}
是json的表示.,放到文件中后可以序列化回来.
gson还有一些优点,比如支持泛型,看下官方的例子:
还有如果你没有这个类的source文件,只是class文件,照样可以序列化.
分享到:
相关推荐
下面是一些关于序列化的重要知识点: 1. **序列化标识符(SerialVersionUID)**:Java允许你为每个可序列化的类定义一个唯一的`serialVersionUID`,默认是由JVM根据类的结构计算出来的。如果类的版本更新导致结构变化...
- `ObjectStreamClass`类提供了关于序列化类的信息,可以帮助优化序列化过程。 10. **序列化流和数据流**: - `ObjectOutputStream`和`ObjectInputStream`是基于字节流的,它们可以与任何支持字节流的类一起使用...
标题“序列化源码”暗示我们将讨论的是关于序列化操作的具体实现代码。序列化的实现通常涉及自定义序列化逻辑,包括选择合适的序列化库,设计序列化接口,以及处理特殊类型的序列化问题。 在描述中提到“定义数据...
在"SerDemo"这个示例中,可能包含了一个或多个关于序列化和反序列化的代码实例,可能涵盖了上述提到的编程语言中的某一种或多种实现方式。通过学习和分析这些代码,我们可以深入理解序列化和反序列化的具体实现,并...
本篇文章将深入探讨C++中JSON的序列化与反序列化。 **一、JSON序列化** 序列化是指将C++的对象转换为JSON字符串的过程,以便在网络上传输或保存到文件中。常见的C++ JSON序列化库有RapidJSON、nlohmann/json、...
XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...
在编程领域,序列化和反序列化是两个关键的概念,它们用于将对象的状态转换为可存储或可传输的格式,然后在需要时恢复为原始对象。Boost库提供了一个强大的工具——Boost.Serialization,来帮助程序员实现这个功能。...
例如,`TextFile.cs`可能包含了读写文本文件的函数,`SerialFileIO.cs`可能是关于序列化对象到文件的实现,而`XmlFileIO.cs`可能处理XML文件的读写,包括对象的XML序列化和反序列化。 7. **Bandweaver.Delta.Files....
在编程领域,序列化和反序列化是两个关键的概念,特别是在跨平台通信、持久化存储以及数据传输中扮演着重要角色。本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指...
在***中处理JSON的序列化和反序列化是Web开发中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性和易于阅读性,被广泛用于服务器与客户端之间的数据传输。下面将详细介绍**...
在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...
在IT领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络通信和分布式系统中。它们涉及将对象的状态转换为可持久化的格式(序列化),以及将这种格式还原回原来的对象(反序列化)。本文将深入探讨这两...
在IT领域,序列化和反序列化是两个关键的概念,特别是在网络通信、数据持久化以及对象存储中。本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过...
在这个特定的场景中,我们关注的是关于“TreeView”控件的序列化。TreeView控件通常用来展示层次化的数据结构,例如文件系统目录或者组织架构。序列化是将对象的状态转化为可存储或可传输的形式的过程,以便稍后恢复...
java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...
### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...
在压缩包的文件名"JSon序列化与反序列化"中,我们可以期待找到关于JSON序列化和反序列化的详细教程、代码示例或者测试用例。这个文件可能包含多个Java源文件,每个文件都展示了一种特定的序列化或反序列化方法,以及...
protobuf序列化和反序列化技术是大数据处理领域中不可或缺的一部分,尤其在实时大数据场景下,高效的数据传输和存储对性能有着直接影响。谷歌推出的Protocol Buffers(简称protobuf)是一种语言无关、平台无关的数据...
在IT领域,序列化和反序列化是两个关键的概念,特别是在处理对象持久化、网络传输或数据存储时。本文将详细探讨标题所提及的“hashtable序列化与反序列化”,并提供一个基本的示例。 首先,让我们理解什么是序列化...
在本项目中,“学生管理系统(序列化和反序列化)”是一个基于Java或类似编程语言实现的系统,其核心功能是有效地存储和恢复学生信息。序列化和反序列化是这个系统的关键技术,它们允许程序将对象的状态转化为可存储...