.NET JSON对象序列化和反序列化

面要介绍的是.net提供的序列化对象DataContractJsonSerializer,他主要是用于将对象转化为JSON格式数据以及将JSON反序列化为对象。

直接上代码吧,可以直接在控制台打印出结果:

                       

  1  class Program

  2     {

  3         static void Main(string[] args)

  4         {

  5             Console.WriteLine("============================序列化单个对象为JSON格式======================================================");

  6             var jsonObj = GetUser().ToJsonString();

  7             Console.WriteLine(jsonObj + "\n\r ");

  8          

  9             Console.WriteLine("============================序列化集合对象为JSON格式======================================================");

 10             var jsonListObj = GetList().ToJsonString();

 11             Console.WriteLine(jsonListObj + "\n\r ");

 12         

 13             Console.WriteLine("============================序列化字符串集合======================================================");

 14             var jsonStrObj = GetString().ToJsonString();

 15             Console.WriteLine(jsonStrObj + "\n\r ");

 16

 17             Console.WriteLine("============================构建一个JSON对象,反序列化为User对象===================================");

 18             //构建JSON对象

 19             string str = "{\"Description\":\"少林袈裟旗舰店店长\",\"Id\":\"1\",\"Name\":\"少林扫地神僧\"}";

 20             var user = str.ToJsonObject<User>();

 21             var entityObj = string.Format("json format str convert to user object:Id={0},Name={1},Description={2}", user.Id, user.Name, user.Description);

 22             Console.WriteLine(entityObj);

 23             Console.ReadKey();

 24         }

 25

 26         public static User GetUser()

 27         {

 28             User user = new User()

 29             {

 30                 Id = 1,

 31                 Name = "无崖子",

 32                 Description = "逍遥派掌门"

 33             };

 34             return user;

 35         }

 36

 37         public static List<User> GetList()

 38         {

 39             List<User> list = new List<User>() {

 40                 new User(){ Id=1,Name="丁春秋", Description="星宿派掌门"},

 41                 new User(){ Id=2,Name="庄聚贤", Description="无所事事的帅哥"},

 42                 new User(){ Id=3,Name="段正淳", Description="风流倜傥大理王爷"}};

 43             return list;

 44         }

 45

 46

 47         public static IList<string> GetString()

 48         {

 49             IList<string> strList = new List<string>();

 50             strList.Add("乔峰");

 51             strList.Add("段誉");

 52             strList.Add("虚竹");

 53             return strList;

 54         }

 55     }

 56

 57

 58     public class User

 59     {

 60         public int Id { get; set; }

 61

 62         public string Name { get; set; }

 63

 64         public string Description { get; set; }

 65     }

 66

 67

 68

 69     public static class StringExtensions

 70     {

 71         /// <summary>

 72         /// 将对象转化为Json字符串

 73         /// </summary>

 74         /// <typeparam name="T">对象类型</typeparam>

 75         /// <param name="instanse">对象本身</param>

 76         /// <returns>JSON字符串</returns>

 77         public static string ToJsonString<T>(this T instanse)

 78         {

 79             try

 80             {

 81                 DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));

 82                 using (MemoryStream ms = new MemoryStream())

 83                 {

 84                     js.WriteObject(ms, instanse);

 85                     ms.Flush();

 86                     ms.Seek(0, SeekOrigin.Begin);

 87                     StreamReader sr = new StreamReader(ms);

 88                     return sr.ReadToEnd();

 89                 }

 90             }

 91             catch

 92             {

 93                 return String.Empty;

 94             }

 95         }

 96

 97         /// <summary>

 98         /// 将字符串转化为JSON对象,如果转换失败,返回default(T)

 99         /// </summary>

100         /// <typeparam name="T">对象类型</typeparam>

101         /// <param name="s">字符串</param>

102         /// <returns>转换值</returns>

103         public static T ToJsonObject<T>(this string s)

104         {

105             try

106             {

107                 DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));

108                 using (MemoryStream ms = new MemoryStream())

109                 {

110                     StreamWriter sw = new StreamWriter(ms);

111                     sw.Write(s);

112                     sw.Flush();

113                     ms.Seek(0, SeekOrigin.Begin);

114                     return (T)js.ReadObject(ms);

115                 }

116             }

117             catch

118             {

119                 return default(T);

120             }

121         }

122     }

 

运行结果:

 

 

posted on 2013-12-02 16:32  烟台天铭网络  阅读(1729)  评论(0编辑  收藏  举报