开发中经常遇到Xml和Json格式的数据需要进行相关的业务处理,虽然可以直接操作Xml或Json,但是转换成对象操作可以更方便的在系统中传递和操作。尤其是系统间使用报文形式通信时,需要对象和Xml或Json互相转换。
操作Json这里使用Json.Net,需要通过Nuget安装 “ Newtonsoft.Json”;
安装命令:Install-Package Newtonsoft.Json -Version 13.0.1
参考代码:
public class SerializtionDemo{public static void DemoMain(){Root root = XmlDeserialize(GetXmlStr());string Xml = XmlSerialize(root);Console.WriteLine($"Xml:{Xml}");string Json = JsonSerialize(root);Root root2 = JsonDeserialize(Json);Console.WriteLine($"Json:{Json}");Console.Read();}/// /// 提供初始Xml字符串/// /// private static string GetXmlStr(){StringBuilder sb = new StringBuilder();sb.Append("");sb.Append("");sb.Append("");sb.Append("1");sb.Append("2");sb.Append("3");sb.Append("");sb.Append("");return sb.ToString();}/// /// Xml转对象/// /// /// /// private static T XmlDeserialize(string xml) where T : class{using MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml));using XmlReader reader = XmlReader.Create(stream);T result = (T)new XmlSerializer(typeof(T)).Deserialize(reader);return result;}/// /// 对象转Xml/// /// /// /// private static string XmlSerialize(T Obj) where T : class{XmlDocument xmlDocument = new XmlDocument();using MemoryStream stream = new MemoryStream();XmlSerializer serializer = new XmlSerializer(typeof(T));serializer.Serialize(stream, Obj);stream.Position = 0;xmlDocument.Load(stream);return xmlDocument.InnerXml;}/// /// Json字符串转对象/// /// /// /// private static T JsonDeserialize(string json){return JsonConvert.DeserializeObject(json);}private static string JsonSerialize(T Obj){return JsonConvert.SerializeObject(Obj);}[XmlRoot("root")]public class Root{[XmlElement("data")]public Data data;}public class Data{[XmlElement("d1")]public List d1s;}}
输出结果: