Json XML序列化和反序列化

1.json序列化和反序列化

序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程;

反序列化,它將流轉(zhuǎn)換為對(duì)象;

1)Json.Net

推薦使用Json.Net類庫(kù),需要引入的命名空間;

序列化:JsonConvert.SerializeObject

反序列化:JsonConvert.DeserializeObject

序列化和反序列化

2)使用JavaScriptSerializer類

使用JavaScriptSerializer方式需要引入的命名空間,這個(gè)在程序集System.Web.Extensions.dll.中;

3)使用DataContractJsonSerializer類

使用DataContractJsonSerializer方式需要引入的命名空間,在System.Runtime.Serialization.dll.中;

2.xml序列化和反序列化

1)序列化:

引入命名空間System.Xml.Serialization;

XmlRoot,XmlElement,XmlAttribute,XmlIgnore

數(shù)組的Xml序列化需要使用XmlArrayAttribute和XmlArrayItemAttribute;XmlArrayAttribute指定數(shù)組元素的Xml節(jié)點(diǎn)名,XmlArrayItemAttribute指定數(shù)組元素的Xml節(jié)點(diǎn)名;

XML序列化

2)反序列化:

XML反序列化

3)自定義對(duì)象的XML序列化:

[XmlRoot("cat")] //根節(jié)點(diǎn)

? ? public class Cat

? ? {

? ? ? ? //定義Color屬性的序列化為cat節(jié)點(diǎn)的屬性

? ? ? ? [XmlAttribute("color")]

? ? ? ? public string Color { get; set; }

? ? ? ? //要求不序列化Speed屬性

? ? ? ? [XmlIgnore]

? ? ? ? public int Speed { get; set; }

? ? ? ? //設(shè)置Saying屬性序列化為Xml子元素

? ? ? ? [XmlElement("saying")]

? ? ? ? public string Saying { get; set; }

? ? }

4)對(duì)象數(shù)組的Xml序列化:

[XmlRoot("cats")]

????public?class?CatCollection

????{

????????[XmlArray("items"),XmlArrayItem("item")]

????????public?Cat[] Cats {?get;?set; }

????}

3.XML基本操作

引入命名空間 System.Xml

1)生成xml文件

2)遍歷xml文件的節(jié)點(diǎn)信息

3)修改xml文件的節(jié)點(diǎn)信息

4)向xml文件添加節(jié)點(diǎn)信息

5)刪除指定節(jié)點(diǎn)信息

總結(jié)XML基本方法:

? ? ? ? ? ? ?//所需要添加的命名空間

    using System.Xml;

    //初始化一個(gè)xml實(shí)例

    XmlDocument xml=new XmlDocument();

    //導(dǎo)入指定xml文件

    xml.Load(“xml文件路徑path”);

    //指定一個(gè)節(jié)點(diǎn)

    XmlNode root=xml.SelectSingleNode("節(jié)點(diǎn)名稱");

    //獲取節(jié)點(diǎn)下所有直接子節(jié)點(diǎn)

    XmlNodeList childlist=root.ChildNodes;

    //判斷該節(jié)點(diǎn)下是否有子節(jié)點(diǎn)

    root.HasChildNodes;

    //獲取同名同級(jí)節(jié)點(diǎn)集合

    XmlNodeList nodelist=xml.SelectNodes("節(jié)點(diǎn)名稱");

    //生成一個(gè)新節(jié)點(diǎn)

    XmlElement node=xml.CreateElement("節(jié)點(diǎn)名稱");

    //將節(jié)點(diǎn)加到指定節(jié)點(diǎn)下,作為其子節(jié)點(diǎn)

    root.AppendChild(node);

    //將節(jié)點(diǎn)加到指定節(jié)點(diǎn)下某個(gè)子節(jié)點(diǎn)前

    root.InsertBefore(node,root.ChildeNodes[i]);

    //為指定節(jié)點(diǎn)的新建屬性并賦值

    node.SetAttribute("id","11111");

    //為指定節(jié)點(diǎn)添加子節(jié)點(diǎn)

    root.AppendChild(node);

    //獲取指定節(jié)點(diǎn)的指定屬性值

    string id=node.Attributes["id"].Value;

    //獲取指定節(jié)點(diǎn)中的文本

    string content=node.InnerText;

    //保存XML文件

    xml.Save(“xml文件存儲(chǔ)的路徑path”);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容