什么是序列化?在什么情况下将类序列化?
来源:互联网 发布:电视播放软件破解版 编辑:程序博客网 时间:2024/05/01 04:05
什么是序列化?在什么情况下将类序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
是对象永久化的一种机制。
确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。
Newtonsoft.Json实例
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
是对象永久化的一种机制。
确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。
对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口 。
Newtonsoft.Json实例
1.JSON序列化
string JsonStr= JsonConvert.SerializeObject(Entity);
eg:
A a=new A();a.Name="Elain00";a.Hobby="eat eat";string jsonStr=JsonConvert.SerializeObject(a);
2.JSON反序列化
string jsonstr = "jsonString"; Class model = JsonConvert.DeserializeObject<Class>(jsonstr);
eg:
string JsonStr='"{\'Name\':\'Elaine00\',\'Hobby\':\'eat eat\'}";A a=JsonConvert.DeserializeObject<A>(JsonStr);
3.时间格式处理
IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; Response.Write(JsonConvert.SerializeObject(bll.GetModelList(strWhere), Newtonsoft.Json.Formatting.Indented, timeFormat));
4.扩展方法
public static class NewtonJSONHelper { public static string SerializeObject(this object obj) { return JsonConvert.SerializeObject(obj, Formatting.Indented, new JsonSerializerSettings{ ReferenceLoopHandling = ReferenceLoopHandling.Ignore}); } public static T DeserializeObject<T>(this string data) { return JsonConvert.DeserializeObject<T>(data, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); } }
5.日期处理
public class LogEntry{ public string Details { get; set; } public DateTime LogDate { get; set; }}public void WriteJsonDates(){ LogEntry entry = new LogEntry { LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc), Details = "Application started." }; // default as of Json.NET 4.5 string isoJson = JsonConvert.SerializeObject(entry); // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"} JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }; string microsoftJson = JsonConvert.SerializeObject(entry, microsoftDateFormatSettings); // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"} string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter()); // {"Details":"Application started.","LogDate":new Date(1234656000000)}}
0 0
- 什么是序列化?在什么情况下将类序列化?
- 什么是序列化?在什么情况下将类序列化?
- 什么是序列化?在什么情况下将类序列化?
- 什么是序列化?在什么情况下将类序列化?
- 什么是对象序列化?如何实现?什么情况下使用?
- 什么是反射,什么序列化?
- 什么是反射?什么是序列化
- 什么是序列化?
- 什么是序列化
- 什么是序列化
- 什么是序列化?
- 什么是序列化
- 什么是序列化
- 什么是序列化
- C# 什么是序列化
- 什么是序列化?
- 什么是java序列化
- 什么是java序列化
- Android 消息处理源码分析(2)
- CentOS 6.6下安装OpenOffice4.0
- Maven工程目录
- SAP标准价格修改
- Android Volley入门到精通:初识Volley的基本用法(示例,出错代码)
- 什么是序列化?在什么情况下将类序列化?
- GRE写作必备句型
- android viewpager+Imagerview的可滑动主界面导航栏
- RedHat Linux 安装oracle11g
- java错误总结
- 黑马程序员学习笔记 Java中多线程与并发的总结
- leetcode 32: Longest Valid Parentheses
- Ubuntu12.04下Boost安装和使用
- Unity2D实现贴图凹凸感并接受实时光照效果