java serializeutils_Nemo_java:序列化/反序列化工具SerializeUtils_Nemo社区_LinkNemo_关于分享和探索的好地方...

import com.fasterxml.jackson.databind.ObjectMapper;

import com.thoughtworks.xstream.XStream;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import pers.adam.framework.bean.User;

import java.beans.XMLDecoder;

import java.beans.XMLEncoder;

import java.io.*;

/**

* 序列化/反序列化工具

* Created by Nemo on 2017/11/2.

*/

public class SerializeUtils{

private static final Logger logger = LoggerFactory.getLogger(SerializeUtils.class);

public static void main(String[] args){

//User

User p = new User(); //peson类记得实现序列化接口 Serializable

p.setPassword("密码忘记了1025");

p.setName("王强");

p.setId(111);

serializeToJsonFile(User.class, p);

User user = unserizlizeToJsonFile(User.class);

logger.info("name = " + user.getName() + " password = " + user.getPassword());

}

/**

* 序列化-byte

*

* @param obj

* @return

*/

public static byte[] serialize(Object obj) {

ObjectOutputStream obi = null;

ByteArrayOutputStream bai = null;

try {

bai = new ByteArrayOutputStream();

obi = new ObjectOutputStream(bai);

obi.writeObject(obj);

return bai.toByteArray();

} catch (IOException e) {

logger.error("对象序列化二进制异常,Exception : " + e);

}

return null;

}

/**

* 反序列化-Object

*

* @param byt

* @return

*/

public static Object unserizlize(byte[] byt){

ObjectInputStream oii = null;

ByteArrayInputStream bis = null;

try {

bis = new ByteArrayInputStream(byt);

oii = new ObjectInputStream(bis);

return oii.readObject();

} catch (Exception e) {

logger.error("二进制反序列化对象异常,Exception : " + e);

}

return null;

}

/**

* 序列化-XML-File

*

* @param clazz

* @param obj

* @param

*/

public static void serializeToXmlFile(Class clazz, Object obj){

FileOutputStream foStream = null;

XStream xStream = null;

try {

foStream = new FileOutputStream("E:\\" + clazz.getSimpleName() + ".xml");

xStream = new XStream();

xStream.alias(clazz.getSimpleName(), obj.getClass());

xStream.toXML(obj, foStream);

} catch (Exception e) {

logger.error("对象序列化为 XML-File 异常,Exception : " + e);

}

}

/**

* 反序列化-XML

*

* @param clazz

* @param

* @return

*/

public static T unserizlizeToXmlFile(Class clazz){

FileInputStream flStream = null;

XStream xStream = null;

try {

xStream = new XStream();

xStream.alias(clazz.getSimpleName(), clazz);

flStream = new FileInputStream("E:\\" + clazz.getSimpleName() + ".xml");

return (T) xStream.fromXML(flStream);

} catch (Exception e) {

logger.error("XML-File 序列化为对象异常,Exception : " + e);

}

return null;

}

/**

* 序列化-XML

*

* @param obj

* @return

*/

public static String serializeToXml(T obj){

ByteArrayOutputStream out = null;

XMLEncoder encoder = null;

try {

out = new ByteArrayOutputStream();

encoder = new XMLEncoder(new BufferedOutputStream(out));

encoder.writeObject(obj);

encoder.close();

return out.toString();

} catch (Exception e) {

logger.error("对象序列化XML异常,Exception : " + e);

}

return null;

}

/**

* 反序列化-XML

*

* @param xml

* @param

* @return

*/

public static T unserizlizeToXml(String xml){

ByteArrayInputStream in = null;

XMLDecoder decoder = null;

try {

in = new ByteArrayInputStream(xml.getBytes());

decoder = new XMLDecoder(new BufferedInputStream(in));

decoder.close();

return (T) decoder.readObject();

} catch (Exception e) {

logger.error("XML反序列化对象异常,Exception : " + e);

}

return null;

}

/**

* JSON

* ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。

* ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。

* writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。

* writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。

* writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。

* writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。

*

* 序列化-JSON-File

* writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。

*

* @param obj

*/

public static void serializeToJsonFile(Class clazz, Object obj){

ObjectMapper mapper = null;

FileOutputStream fos = null;

try {

fos = new FileOutputStream("E:\\" + clazz.getSimpleName() + ".js");

mapper = new ObjectMapper();

mapper.writeValue(fos, obj);

} catch (Exception e) {

logger.error("对象序列化JSON-File 异常,Exception : " + e);

}

}

/**

* 反序列化-JSON

*

* @param clazz

* @param

*/

public static T unserizlizeToJsonFile(Class clazz){

ObjectMapper mapper = null;

FileInputStream fis = null;

try {

fis = new FileInputStream("E:\\" + clazz.getSimpleName() + ".js");

mapper = new ObjectMapper();

return (T) mapper.readValue(fis, clazz);

} catch (Exception e) {

logger.error("对象序列化JSON异常,Exception : " + e);

}

return null;

}

/**

* 序列化-JSON

*

* @param obj

*/

public static String unserizlizeToJson(Object obj){

ObjectMapper mapper = null;

try {

mapper = new ObjectMapper();

return mapper.writeValueAsString(obj);

} catch (Exception e) {

logger.error("对象序列化JSON异常,Exception : " + e);

}

return null;

}

/**

* 反序列化-JSON

*

* @param json

*/

public static T unserizlizeToJson(Class clazz, String json){

ObjectMapper mapper = null;

try {

mapper = new ObjectMapper();

return (T) mapper.readValue(json, clazz);

} catch (Exception e) {

logger.error("对象序列化JSON异常,Exception : " + e);

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值