序列化与反序列化
date
Jan 18, 2019
slug
序列化与反序列化
status
Published
tags
Java
summary
type
Post
category
定义
计算机通讯中通讯双方需要约定协议,序列化与反序列化就是通信协议的一部分,在OSI七层协议模型的展示层中,需要把应用层的对象或数据结构转化为一段连续的二进制串,或把一段连续的二进制串转化为应用层的对象或数据结构
- 序列化:将对象或数据结构转化为二进制串的过程
- 反序列化:将序列化生成的二进制串转化为对象或数据结构的过程
Java中的数据结构、对象、二进制串
Java中最接近数据结构概念的就是POJO.POJO是plain old Java object的简称,中文名为普通java类,具备一部分getter/setter方法的类就可称为POJO,其不允许携带业务方法,connection等,POJO也可称为简单的JavaBean,JavaBean是由Java语言写成的可复用组件,其有三个约定条件:
- 必须有一个public的缺省构造函数
- 必须有getter/setter
- 这个类可序列化因此很多人把JavaBean看作是遵循特定规则的POJO
Java中的String与二进制串是不同的,String是Java中的一种特殊Object,而序列化后的二进制串所指的应该是Java原生数据类型byte[]
代码部分
在Java中可以直接将数据结构转为二进制串,也可以直接将二进制串转为数据结构
在有些需求中需要存储序列化后的二进制串,二进制串改变为字符串可以使用byteArrayOutputStream.toString(String chartsetName)