1.泛型方法
using System.Collections.Generic; using System.Linq; using System.Text; namespace StreamTest { public class JsonSerialization { #region Serialize/Deserialize public static string Serialize<T>(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); return Encoding.UTF8.GetString(ms.ToArray()); } } public static T Deserialize<T>(string input) { if (string.IsNullOrWhiteSpace(input)) { return default(T); } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(input))) { return (T)serializer.ReadObject(ms); } } #endregion } }
2.泛型类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; using System.IO; namespace ConsoleApplication16 { public class JsonSerialization<T> { public static string Serialize(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); return Encoding.UTF8.GetString(ms.ToArray()); } } public static T Deserialize(string input) { if (string.IsNullOrWhiteSpace(input)) { return default(T); } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(input))) { return (T)serializer.ReadObject(ms); } } } }
两种方法比较,第二种更加规范,建议用第二种写法。
3.举例说明
public class Person { public string Id {get;set;} public string Name {get;set;} }
static void Main(string[] args) { Person person = new Person { Id = "12345", Name = "xiaoming" }; string str = JsonSerialization<Person>.Serialize(person); Console.WriteLine(str); Console.ReadKey(); }
输出结果:{"Id":"12345","Name":"xiaoming"}