`
kakashi
  • 浏览: 23946 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于序列化

    博客分类:
  • java
阅读更多

 

最近项目上用到了序列化的东西,所以就来总结一下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文件,照样可以序列化.

分享到:
评论

相关推荐

    java 对象的序列化与反序列化

    下面是一些关于序列化的重要知识点: 1. **序列化标识符(SerialVersionUID)**:Java允许你为每个可序列化的类定义一个唯一的`serialVersionUID`,默认是由JVM根据类的结构计算出来的。如果类的版本更新导致结构变化...

    Java 文件 序列化 读写

    - `ObjectStreamClass`类提供了关于序列化类的信息,可以帮助优化序列化过程。 10. **序列化流和数据流**: - `ObjectOutputStream`和`ObjectInputStream`是基于字节流的,它们可以与任何支持字节流的类一起使用...

    序列化源码

    标题“序列化源码”暗示我们将讨论的是关于序列化操作的具体实现代码。序列化的实现通常涉及自定义序列化逻辑,包括选择合适的序列化库,设计序列化接口,以及处理特殊类型的序列化问题。 在描述中提到“定义数据...

    序列化和反序列化

    在"SerDemo"这个示例中,可能包含了一个或多个关于序列化和反序列化的代码实例,可能涵盖了上述提到的编程语言中的某一种或多种实现方式。通过学习和分析这些代码,我们可以深入理解序列化和反序列化的具体实现,并...

    C++ JSON 序列化与反序列化

    本篇文章将深入探讨C++中JSON的序列化与反序列化。 **一、JSON序列化** 序列化是指将C++的对象转换为JSON字符串的过程,以便在网络上传输或保存到文件中。常见的C++ JSON序列化库有RapidJSON、nlohmann/json、...

    XML序列化与反序列化 实战

    XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...

    基于boost的序列化与反序列化

    在编程领域,序列化和反序列化是两个关键的概念,它们用于将对象的状态转换为可存储或可传输的格式,然后在需要时恢复为原始对象。Boost库提供了一个强大的工具——Boost.Serialization,来帮助程序员实现这个功能。...

    类的序列化与反序列化

    例如,`TextFile.cs`可能包含了读写文本文件的函数,`SerialFileIO.cs`可能是关于序列化对象到文件的实现,而`XmlFileIO.cs`可能处理XML文件的读写,包括对象的XML序列化和反序列化。 7. **Bandweaver.Delta.Files....

    C#和Java的序列化反序列化

    在编程领域,序列化和反序列化是两个关键的概念,特别是在跨平台通信、持久化存储以及数据传输中扮演着重要角色。本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指...

    ASPNET中JSON的序列化和反序列化的方法

    在***中处理JSON的序列化和反序列化是Web开发中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性和易于阅读性,被广泛用于服务器与客户端之间的数据传输。下面将详细介绍**...

    序列化和反序列化的封装类

    在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...

    序列化和反序列化dll文件和proto

    在IT领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络通信和分布式系统中。它们涉及将对象的状态转换为可持久化的格式(序列化),以及将这种格式还原回原来的对象(反序列化)。本文将深入探讨这两...

    hessian学习基础篇——序列化和反序列化

    在IT领域,序列化和反序列化是两个关键的概念,特别是在网络通信、数据持久化以及对象存储中。本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过...

    C#关于treeview序列化的一个应用程序

    在这个特定的场景中,我们关注的是关于“TreeView”控件的序列化。TreeView控件通常用来展示层次化的数据结构,例如文件系统目录或者组织架构。序列化是将对象的状态转化为可存储或可传输的形式的过程,以便稍后恢复...

    java序列化和反序列化的方法

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    序列化与反序列化

    在压缩包的文件名"JSon序列化与反序列化"中,我们可以期待找到关于JSON序列化和反序列化的详细教程、代码示例或者测试用例。这个文件可能包含多个Java源文件,每个文件都展示了一种特定的序列化或反序列化方法,以及...

    protobuf序列化和反序列化技术

    protobuf序列化和反序列化技术是大数据处理领域中不可或缺的一部分,尤其在实时大数据场景下,高效的数据传输和存储对性能有着直接影响。谷歌推出的Protocol Buffers(简称protobuf)是一种语言无关、平台无关的数据...

    hashtable序列化与反序列化

    在IT领域,序列化和反序列化是两个关键的概念,特别是在处理对象持久化、网络传输或数据存储时。本文将详细探讨标题所提及的“hashtable序列化与反序列化”,并提供一个基本的示例。 首先,让我们理解什么是序列化...

    学生管理系统(序列化和反序列化)

    在本项目中,“学生管理系统(序列化和反序列化)”是一个基于Java或类似编程语言实现的系统,其核心功能是有效地存储和恢复学生信息。序列化和反序列化是这个系统的关键技术,它们允许程序将对象的状态转化为可存储...

Global site tag (gtag.js) - Google Analytics