.NET JSON对象序列化和反序列化
2013-07-28 12:04
381 查看
昨晚和几个哥们打字牌,打了个通宵,早上睡了2个多小时,发现精神还很抖擞(要是写代码有这么给力...哎。碉堡了)。闲来无事,打开VS,coding总结了下.NET序列化:
序列化定义:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
下面要介绍的是.net提供的序列化对象DataContractJsonSerializer,他主要是用于将对象转化为JSON格式数据以及将JSON反序列化为对象。
直接上代码吧,可以直接在控制台打印出结果:
运行结果:
序列化定义:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
下面要介绍的是.net提供的序列化对象DataContractJsonSerializer,他主要是用于将对象转化为JSON格式数据以及将JSON反序列化为对象。
直接上代码吧,可以直接在控制台打印出结果:
class Program { static void Main(string[] args) { Console.WriteLine("============================序列化单个对象为JSON格式======================================================"); var jsonObj = GetUser().ToJsonString(); Console.WriteLine(jsonObj + "\n\r "); Console.WriteLine("============================序列化集合对象为JSON格式======================================================"); var jsonListObj = GetList().ToJsonString(); Console.WriteLine(jsonListObj + "\n\r "); Console.WriteLine("============================序列化字符串集合======================================================"); var jsonStrObj = GetString().ToJsonString(); Console.WriteLine(jsonStrObj + "\n\r "); Console.WriteLine("============================构建一个JSON对象,反序列化为User对象==================================="); //构建JSON对象 string str = "{\"Description\":\"少林袈裟旗舰店店长\",\"Id\":\"1\",\"Name\":\"少林扫地神僧\"}"; var user = str.ToJsonObject<User>(); var entityObj = string.Format("json format str convert to user object:Id={0},Name={1},Description={2}", user.Id, user.Name, user.Description); Console.WriteLine(entityObj); Console.ReadKey(); } public static User GetUser() { User user = new User() { Id = 1, Name = "无崖子", Description = "逍遥派掌门" }; return user; } public static List<User> GetList() { List<User> list = new List<User>() { new User(){ Id=1,Name="丁春秋", Description="星宿派掌门"}, new User(){ Id=2,Name="庄聚贤", Description="无所事事的帅哥"}, new User(){ Id=3,Name="段正淳", Description="风流倜傥大理王爷"}}; return list; } public static IList<string> GetString() { IList<string> strList = new List<string>(); strList.Add("乔峰"); strList.Add("段誉"); strList.Add("虚竹"); return strList; } } public class User { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } } public static class StringExtensions { /// <summary> /// 将对象转化为Json字符串 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="instanse">对象本身</param> /// <returns>JSON字符串</returns> public static string ToJsonString<T>(this T instanse) { try { DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { js.WriteObject(ms, instanse); ms.Flush(); ms.Seek(0, SeekOrigin.Begin); StreamReader sr = new StreamReader(ms); return sr.ReadToEnd(); } } catch { return String.Empty; } } /// <summary> /// 将字符串转化为JSON对象,如果转换失败,返回default(T) /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="s">字符串</param> /// <returns>转换值</returns> public static T ToJsonObject<T>(this string s) { try { DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { StreamWriter sw = new StreamWriter(ms); sw.Write(s); sw.Flush(); ms.Seek(0, SeekOrigin.Begin); return (T)js.ReadObject(ms); } } catch { return default(T); } } }
运行结果:
相关文章推荐
- .NET JSON对象序列化和反序列化
- [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化
- 在MVC中使用Json.Net序列化和反序列化Json对象
- .net Json对象序列化和反序列化
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
- .NET JSON对象序列化和反序列化
- 在MVC中使用Json.Net序列化和反序列化Json对象
- C# 对象的序列化与反序列化 (DataContractJsonSerializer)
- 使用NewtonSoft.JSON.dll来序列化和反序列化对象
- .Net——使用DataContractJsonSerializer进行序列化及反序列化基本操作
- .net中反序列化json对象方法(使用Dynamic)
- JavaScriptSerializer如何对Json对象序列化和反序列化
- C#json数据的序列化和反序列化(将数据转换为对象或对象集合)
- .NET对象的XML序列化和反序列化实例详解
- 【json】使用json和java对象的序列化和反序列化
- Json.Net系列教程 3.Json.Net序列化和反序列化设置
- 使用Newtonsoft.Json序列化和反序列化对象(源码)
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现