近期将ehcache迁移到redis时,通过jedis访问服务端,需要将 普通实体类、Map 、list存到缓存里,而jedis仅仅支持String,byte[]两种,因此想到把 普通实体类、Map 、list进行序列化方便存储,然后再反序列化从缓存中取出数据。
package com.enation.framework.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author yulele
* @date 2015年12月22日 上午10:08:43
*/
public class SerializationUtil {
private static Log loger = LogFactory.getLog("SerializationUtil");
/**
* 序列化
* @param object
* @return
*/
public static byte[] serialize(Object object) {
if (object == null) {
throw new NullPointerException("Can't serialize null");
}
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
byte[] bytes=null;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
if(object instanceof List){
for(Object obt : (List)object){
oos.writeObject(obt);
}
}else{
oos.writeObject(object);
}
bytes = baos.toByteArray();
} catch (Exception e) {
loger.error("serialize error:"+e.getMessage());
}
return bytes;
}
/**
* 反序列化
*
* @param bytes
* @return
*/
public static Object deserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
ObjectInputStream ois=null;
Object obj=null;
try {
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
obj = ois.readObject();
} catch (Exception e) {
loger.error("deserialize error:"+e.getMessage());
}
return obj;
}
/**
* list反序列化
*
* @param bytes
* @return
*/
public static List<Object> deserializeList(byte[] bytes) {
ByteArrayInputStream bais = null;
ObjectInputStream ois=null;
List<Object> list = new ArrayList<Object>();
try {
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
while(true){
Object obj=(Object) ois.readObject();
if(obj==null){
break;
}else{
list.add(obj);
}
}
} catch (Exception e) {
loger.error("deserialize error:"+e.getMessage());
}
return list;
}
}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author yulele
* @date 2015年12月22日 上午10:08:43
*/
public class SerializationUtil {
private static Log loger = LogFactory.getLog("SerializationUtil");
/**
* 序列化
* @param object
* @return
*/
public static byte[] serialize(Object object) {
if (object == null) {
throw new NullPointerException("Can't serialize null");
}
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
byte[] bytes=null;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
if(object instanceof List){
for(Object obt : (List)object){
oos.writeObject(obt);
}
}else{
oos.writeObject(object);
}
bytes = baos.toByteArray();
} catch (Exception e) {
loger.error("serialize error:"+e.getMessage());
}
return bytes;
}
/**
* 反序列化
*
* @param bytes
* @return
*/
public static Object deserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
ObjectInputStream ois=null;
Object obj=null;
try {
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
obj = ois.readObject();
} catch (Exception e) {
loger.error("deserialize error:"+e.getMessage());
}
return obj;
}
/**
* list反序列化
*
* @param bytes
* @return
*/
public static List<Object> deserializeList(byte[] bytes) {
ByteArrayInputStream bais = null;
ObjectInputStream ois=null;
List<Object> list = new ArrayList<Object>();
try {
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
while(true){
Object obj=(Object) ois.readObject();
if(obj==null){
break;
}else{
list.add(obj);
}
}
} catch (Exception e) {
loger.error("deserialize error:"+e.getMessage());
}
return list;
}
}