`
wanglei6744
  • 浏览: 25550 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 序列化学习 —— Object序列化成字符串

阅读更多

最近项目中遇到了将实体类序列化成字符串存进数据库的需求,特地写了个公用的Object 序列化成字符串的工具类:

要求: Object 必须继承Serializable 接口 ,最好有个序列化Id 这样在类转换和扩展时 能避免很多不必要的错误。关于java类的序列化可参考:

http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html?ca=drs- 这篇文章 通俗易懂。

下面贴上代码, 大家可以顺便复习下 IO 和 泛型的知识。

代码:

 

public class SerializeTool
{
	public static String object2String(Object obj)
	{
		String objBody = null;
		ByteArrayOutputStream baops = null;
		ObjectOutputStream oos = null;

		try
		{
			baops = new ByteArrayOutputStream();
			oos = new ObjectOutputStream(baops);
			oos.writeObject(obj);
			byte[] bytes = baops.toByteArray();
			objBody = new String(bytes);
		} catch (IOException e)
		{
			LogUtil.debug(e);
		} finally
		{
			try
			{
				if (oos != null)
					oos.close();
				if (baops != null)
					baops.close();
			} catch (IOException e)
			{
				LogUtil.debug(e);
			}
		}
		return objBody;
	}

	@SuppressWarnings("unchecked")
	public static <T extends Serializable> T getObjectFromString 
					(String objBody, Class<T> clazz)

	{
		byte[] bytes = objBody.getBytes();
		ObjectInputStream ois = null;
		T obj = null;
		try
		{
			ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
			obj = (T) ois.readObject();
		} catch (IOException e)
		{
			LogUtil.debug(e);
		} catch (ClassNotFoundException e)
		{
			LogUtil.debug(e);
		} finally
		{

			try
			{
				if (ois != null)
					ois.close();
			} catch (IOException e)
			{
				LogUtil.debug(e);
			}
		}

		return obj;
	}

}
   

 

 
  

 

分享到:
评论
3 楼 renci 2013-06-01  
楼主你测试过没,代码运行就报错
反序列化HasSet
2 楼 wanglei6744 2011-05-22  
jilen 写道
这种需求不多见啊,一般数据库存对象不都是用orm框架来做的,存字节略写怪异,没有可读性。更多时候是通过网络传输给远程主机


我们各种奇怪需求,我还有系统recovery 需求,服务器挂了 要求恢复到挂前状态……
1 楼 jilen 2011-05-22  
这种需求不多见啊,一般数据库存对象不都是用orm框架来做的,存字节略写怪异,没有可读性。更多时候是通过网络传输给远程主机

相关推荐

    kryo实例,对java object的序列化和反序列化

    kryo中间件实例,内容:使用kryo使java对象object序列化成字符串,并使之反序列化为对象。 一个完整的工程,可使用eclipse导入,可运行DemoMain查看结果,有注释 资源包括依赖的kryo-2.24.0.jar、minlog-1.2.jar、...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    比较常见的做法有两种: 一是把对象包装成JSON字符串传输, 二是采用Java对象的序列化和反序列化。 随着Google工具protoBuf的开源,protobuf也是个不错的选择。 *提示:对JSON,Object Serialize,ProtoBuf 做个对比。...

    Java实现Json字符串与Object对象相互转换的方式总结

    主要介绍了Java实现Json字符串与Object对象相互转换的方式,结合实例形式总结分析了java基于Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型相关操作技巧,需要的朋友可以参考下

    django model object序列化实例

    提到序列化与反序列化,通常会想到 json ,xml .在J2EE的开发中,这是很常用的技术,比如一个java ...这个json 包主要提供了dump,load 来实现dict 与 字符串之间的序列化与反序列化,这很方便的可以完成,可以参考这篇文

    js序列化和反序列化的使用讲解

    即js中的Object转化为字符串 1.使用obj.toJSONString() var str=obj.toJSONString(); //将JSON对象转化为JSON字符 2.使用JSON.stringify(obj) var str=JSON.stringify(obj); //将JSON对象转化为JSON字符 (2)反...

    Java SE编程入门教程 String字符串(共27页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    Java SE编程入门教程 java object(共9页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    JS实现json的序列化和反序列化功能示例

    本文实例讲述了JS实现json的序列化和反...eval将字符串反序列化成对象 var s = eval&#40;'(' + data+ '&#41;'); console.log(s.Name); 完整示例: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;met

    Java工程师面试复习指南

    序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和LinkedList Java集合详解:迭代器,快速失败机制与比较器...

    Python基础教程:json序列化详细用法介绍.pdf

    要把JSON反序列化为Python对象,我们可以⽤loads()或者对应的load()⽅法,前者把JSON的字符串反序列化,后者从Object中读取字 符串并反序列化: ⽐如这样: import json json_str = '{"name": "Kaven", "age": 17, ...

    json-object-mapper:一个TypeScript库,用于以快速且非递归的方式将对象图从JSON序列化和反序列化

    它具有以下方法: serialize(Object) =&gt; String :将类实例序列化为JSON字符串。 deserialize(Type, Object) =&gt; Type :将接受一个类类型和一个JSON对象,并基于JSON数据模型创建该类类型的新实例。 ...

    JavaScript实现的反序列化json字符串操作示例

    主要介绍了JavaScript实现的反序列化json字符串操作,结合实例形式分析了eval与JSON.parse两种反序列化json字符串的相关操作技巧,需要的朋友可以参考下

    JSON PHP中,Json字符串反序列化成对象/数组的方法

    //json_decode(json字符串); $city = array('shandong'=&gt;'jinan','henan'=&gt;'zhengzhou','hebei'=&gt;'shijiazhuang'); $jn_city = json_encode($city); //反编码json $fan_city = json_decode($jn_city,false);//第二个...

    Java SE编程入门教程 java判断循环(共79页).ppt

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...

    C#全能速查宝典

    1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE函数——返回当前系统日期和时间 58 1.4.15 GetDayOfMonth方法——返回几号 59 1.4.16 GetDayOfWeek方法——返回星期几 59 1.4.17 GetDayOfYear方法——返回第...

    Json 序列化与反序列 C#脚本(.Net方法)

    Json 序列化与反序列 C#脚本 //读json ,s是json字符串,Type是要转换成的对象类型 public static object ReadJsonSerializer(string s, Type type) //写Json ,o是对象,Type是o的对象类型,返回Json字符串 ...

    在JavaScript中的对象到JSON字符串序列化期间使用修剪

    如何在JavaScript中的对象到JSON字符串序列化期间使用修整

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

Global site tag (gtag.js) - Google Analytics