public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var person = new Person { UserName = "杨彬", Sex = "男", Age = 28 }; var jason = GetSerializerXml(person); var jason2 = GetSerializerJson(person); label1.Text = jason; } private void button2_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(label1.Text)) return; if (label1.Text.EndsWith(">")) { Person person = DeSerializerFromXml<Person>(label1.Text); } if (label1.Text.StartsWith("{")) { Person person = DeSerializerFromJson<Person>(label1.Text); } } #region Serialization public static string GetSerializerXml<T>(T t) { var xmlSerializer = new XmlSerializer(t.GetType()); var memoryStream = new MemoryStream(); try { var xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xmlSerializer.Serialize(xmlTextWriter, t); memoryStream = xmlTextWriter.BaseStream as MemoryStream; if (memoryStream != null) { var utf8Encoding = new UTF8Encoding(); string strXml = utf8Encoding.GetString(memoryStream.ToArray()); return strXml; } return string.Empty; } finally { memoryStream.Close(); } } public static string GetSerializerJson<T>(T t) { var jsonSerializer = new DataContractJsonSerializer(typeof(T)); using (var stream = new MemoryStream()) { jsonSerializer.WriteObject(stream, t); if (stream != null) { var utf8Encoding = new UTF8Encoding(); string strJson = utf8Encoding.GetString(stream.ToArray()); return strJson; } return string.Empty; } } public static T DeSerializerFromXml<T>(string xml) { var xmlSerializer = new XmlSerializer(typeof(T)); var utf8Encoding = new UTF8Encoding(); using (var memoryStream = new MemoryStream(utf8Encoding.GetBytes(xml))) { var t = (T)xmlSerializer.Deserialize(memoryStream); return t; } } public static T DeSerializerFromJson<T>(string json) { var jsonSerializer = new DataContractJsonSerializer(typeof(T)); var utf8Encoding = new UTF8Encoding(); using (var memoryStream = new MemoryStream(utf8Encoding.GetBytes(json))) { var t = (T)jsonSerializer.ReadObject(memoryStream); return t; } } #endregion } [Serializable()] public class Person { public string UserName { get; set; } [NonSerialized()] public string Sex = ""; [NonSerialized()] public int Age = 0;