pojo的序列化和反序列化

实例代码:

package com.lky.pojo;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.UnsupportedEncodingException;

import org.junit.Test;

/**
* @Title: Serializer.java
* @Package com.lky.pojo
* @Description:将数据类型T序列化和反序列化(T 类型要实现 Serializable接口)
* @author lky
* @date 2015年10月20日 上午11:38:12
* @version V1.0
 */
public class Serializer<T> {

    public byte[] ObjectToByteArray(T obj) {
        byte[] bytes = null;
        ByteArrayOutputStream baos = null;//用来缓存数据,向它的内部缓冲区写入数据,缓冲区自动增长(字节流----->字节数组)
        ObjectOutputStream oos = null;
        try {
            baos = new ByteArrayOutputStream();// 声明一个字节数组输出流
            oos = new ObjectOutputStream(baos);// 声明对象字节输出流

            oos.writeObject(obj);
            oos.flush();
            bytes = baos.toByteArray();// 转化为字节数组
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (oos != null) {
                    oos.close();
                }
                if (baos != null) {
                    baos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return bytes;
    }

    @SuppressWarnings("unchecked")
    public T ByteArrayToObject(byte[] obj) {
        T student = null;
        ByteArrayInputStream bais = null;//从字节数组中读入到字节流(字节数组------->字节流)
        ObjectInputStream ois = null;

        try {
            bais = new ByteArrayInputStream(obj);
            ois = new ObjectInputStream(bais);
            student = (T) ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (ois != null) {
                    ois.close();
                }
                if (bais != null) {
                    bais.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return student;
    }

    @Test
    public void testSerializer() throws UnsupportedEncodingException {
        Student student = new Student();
        student.setEmail("[email protected]");
        student.setName("lky");
        student.setPassword("lky");
//        byte[] result = new Serializer<Student>().ObjectToByteArray(student);
//        System.out.println(new Serializer<Student>().ByteArrayToObject(result).toString());
//        byte[] result = new Serializer<String>().ObjectToByteArray("lky");
//        System.out.println(new Serializer<String>().ByteArrayToObject(result).toString());

        byte[] result = new Serializer<Integer>().ObjectToByteArray(Integer.valueOf(100));
        System.out.println(new Serializer<Integer>().ByteArrayToObject(result).toString());
    }
}
时间: 2024-10-28 19:43:49

pojo的序列化和反序列化的相关文章

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory

Json数据的序列化与反序列化的三种常用方法介绍

以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待... 本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间 的比较...希望能够对读者们有一些帮助... 这里介绍到的三种解析与生成Json数据的方法分别是:标准JSON解析与生成方法.使用gson解析与生成JSON数据 .使用fastJsson解析与生成JSON数据. 首先,这些工具都可以到

Java对象序列化与反序列化

Java对象序列化与反序列化 对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存在,从而可以保存在磁盘上,也可以在网络间传输. 对象的序列化是将一个Java对象写入IO流:与此对应的,反序列化则是从IO流中恢复一个Java对象. 实现序列化 如果要将一个java对象序列化,那么对象的类需要是可序列化的.要让类可序列化,那么这个类需要实现如下两个接口

序列化和反序列化[转]

http://tech.meituan.com/serialization_vs_deserialization.html #摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中:另一方面,它们会以其他更容易理解的概念出现,例如加密.持久化.然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式.大数据量系统设计里面更为显著.恰当的序列化协议不仅可以提高系统的通用性.强健性.安全性.优化系统性

序列化和反序列化-刘丁

#一.定义以及相关概念 互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的协议,序列化和反序列化属于通讯协议的一部分.通讯协议往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP协议是一个四层协议,而OSI模型却是七层协议模型.在OSI七层协议模型中展现层(Presentation Layer)的主要功能是把应用层的对象转换成一段连续的二进制串,或者反过来,把二进制串转换成应用层的对象--这两个功能就是序列化和反序列化. 一般而言,TCP/IP协议的应用层对

序列化和反序列化1

本文来自:http://kb.cnblogs.com/page/515982/ 作者: 刘丁  来源: 美团技术团队  发布时间: 2015-04-23 17:01  阅读: 1541 次  推荐: 3   原文链接   [收藏] 摘要 序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中:另一方面,它们会以其他更容易理解的概念出现,例如加密.持久化.然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,

【转载】序列化和反序列化

#摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中:另一方面,它们会以其他更容易理解的概念出现,例如加密.持久化.然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式.大数据量系统设计里面更为显著.恰当的序列化协议不仅可以提高系统的通用性.强健性.安全性.优化系统性能,而且会让系统更加易于调试.便于扩展.本文从多个角度去分析和讲解"序列化和反序列化",并对比了当前流行的几种序列

序列化和反序列化技术的分析和选择

转自:https://tech.meituan.com/serialization_vs_deserialization.html 美团点评技术团队的文章 #摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中:另一方面,它们会以其他更容易理解的概念出现,例如加密.持久化.然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式.大数据量系统设计里面更为显著.恰当的序列化协议不仅可以提高系统的通

SpringBoot序列化与反序列化

目录 基础知识 序列化 jackson序列化规则 双向注解 @JsonIgnoreProperties @JsonProperty,@JsonGetter,@JsonSetter @JsonUnwrapped @JsonAnyGetter,@JsonAnySetter @JsonSerialize,@JsonDeserialize @JsonView 序列化注解 @JsonFormat @JsonIgnore @JsonIgnoreType @JsonInclude @JsonAutoDetec