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("1411075450@qq.com");
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());
}
}
pojo的序列化和反序列化的更多相关文章
- MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化
在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serial ...
- MessagePack Java Jackson 序列化和反序列化 POJO 为 MessagePack 的数组类型用来与 msgpack-java:0.6 保持兼容性
在 msgpack-java 0.6 或者早期的版本中,POJO 在 MessagePack 中被序列化和反序列化为数组变量. 变量的顺序是基于 Java 类中变量的内部顺序了,这种本来是一种原生的序 ...
- 第一章 JacksonUtil 序列化与反序列化属性总结
1.json-lib与Jackson 关于json-lib与Jackson对比总结如下: 1).性能方面,Jackson的处理能力高出Json-lib10倍左右. 2).json-lib已经停止更新, ...
- SpringBoot系列: Json的序列化和反序列化
============================= 控制 json 序列化/反序列化=============================1. @JsonIgnoreProperties的 ...
- Java对象的序列化与反序列化-Json篇
说到Java对象的序列化与反序列化,我们首先想到的应该是Java的Serializable接口,这玩意在两个系统之间的DTO对象里面可能会用到,用于系统之间的数据传输.或者在RPC(远程方法调用)时可 ...
- Java对象序列化与反序列化
对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存 ...
- Json数据的序列化与反序列化的三种经常用法介绍
下面内容是本作者从官网中看对应的教程后所做的demo.其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方.. 还请各位读者批判性对待... 本文主要介绍在Json数据的序列化 ...
- C# 序列化与反序列化几种格式的转换
这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
随机推荐
- 检查主机是否存活的shell脚本
#!/bin/bash PREFIX= num= " ]; do echo -en "Pinging ${PREFIX}.${num}..." >& &qu ...
- 03-StreamReader和StreamWriter的案例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- hdu 1205
#include <stdio.h> int a[1005000]; int main() { int t; scanf("%d",&t); while(t-- ...
- wxpython下的桥梁信息管理系统
github地址:https://github.com/billiepander/BIMS 第一版: 现在实现了登陆,与部门级别用户录入桥梁检测信息后保存为excel(后期要用数据库存一些关键信息,为 ...
- 一个控制台贪吃蛇小游戏(wsad控制移动)
/******************************************** * 程序名称:MR.DUAN 的贪吃蛇游戏(链表法) * 作 者:WindAutumn <flutti ...
- Android应用清单文件:AndroidManifest.xml
AndroidMainfest.xml清单文件是每个Android项目所必需的,它是整个Android应用的全家描述文件. <?xml version="1.0" encod ...
- C++ Const成员函数
一些成员函数改变对象,一些成员函数不改变对象. 例如: int Point::GetY() { return yVal; } 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象 ...
- Linux 挂载iso,并设置为源
ubuntu在安装lsb-core时需要从 /media/cdrom中查找源,无奈我机器的光驱被我换为硬盘了,无法安装光盘,只有在网上下载的iso文件在硬盘中,所以把iso挂载到它要查找位置 执行: ...
- RBAC角色权限设计思路
1 设计思路 为了设计一套具有较强可扩展性的用户认证管理,需要建立用户.角色和权限等数据库表,并且建立之间的关系,具体实现如下. 1.1 用户 用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名.密 ...
- js前台与后台数据交互
客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...