DataContractJsonSerializer类
DataContractJsonSerializer類同樣是提供JSON序列化的類。而且貌似有幾個方法還和XML有點點關(guān)系。
注意用此類要引用System.ServiceModel.Web.dll與System.Runtime.Serialization.dll
1、屬性
DataContractSurrogate 獲取給定 IDataContractSurrogate 實例的當前活動代理項類型。代理項可以擴展序列化或反序列化過程。?
IgnoreExtensionDataObject 獲取一個值,指定在反序列化時是否忽略未知數(shù)據(jù)以及在序列化時是否忽略 IExtensibleDataObject 接口。
KnownTypes ?獲取一個類型集合,這些類型可呈現(xiàn)在使用此 DataContractJsonSerializer 實例序列化的對象圖中。?
MaxItemsInObjectGraph ?獲取序列化程序通過一次讀取或?qū)懭胝{(diào)用在對象圖中序列化或反序列化的最大項數(shù)。
2、方法
IsStartObject 已重載。 獲取一個值,該值指定序列化程序是否可以讀取對象。?
ReadObject ??已重載。 反序列化 JSON(JavaScript 對象表示法)數(shù)據(jù),并返回反序列化的對象。?
WriteEndObject ?已重載。 將結(jié)束 XML 元素寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML 文檔。?
WriteObject ?已重載。 將對象序列化為 JavaScript 對象表示法 (JSON) 文檔。?
WriteObjectContent ? 已重載。 將對象內(nèi)容寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML,而不寫入包裝元素。?
WriteStartObject ?已重載。 寫入開始 XML 元素,以便將對象序列化為可映射到 JavaScript 對象表示法 (JSON) 的 XML。
例子:
class Program{static void Main(string[] args){DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));//最常用的兩個方法string str = "{\"Id\":1,\"Name\":\"劉備\",\"Age\":\"23\"}";Person p;using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str))) //構(gòu)造函數(shù)能夠接受Stream參數(shù),因此你可以用內(nèi)存流,文件流等等創(chuàng)建{p = serializer.ReadObject(ms) as Person;}Console.WriteLine(p.Name); //輸出劉備Person p2 = new Person(2, "關(guān)羽", 23);byte[] byteArr;using (MemoryStream ms = new MemoryStream()){serializer.WriteObject(ms, p2);byteArr = ms.ToArray();}Console.WriteLine(Encoding.UTF8.GetString(byteArr)); //輸出 {"Age":23,"Id":1,"Name":"關(guān)羽"}Console.WriteLine(serializer.MaxItemsInObjectGraph); //2147483647 獲取序列化程序通過一次讀取或?qū)懭胝{(diào)用在對象圖中序列化或反序列化的最大項數(shù)。Console.WriteLine(serializer.DataContractSurrogate); //輸出 空白Console.WriteLine(serializer.IgnoreExtensionDataObject); //False 反序列化時是否忽略未知數(shù)據(jù)以及在序列化時是否忽略 IExtensibleDataObject 接口。 Console.WriteLine(serializer.KnownTypes.Count); //輸出 0 一個類型集合,這些類型可呈現(xiàn)在使用此 DataContractJsonSerializer 實例序列化的對象圖中。 //IsStartObject 已重載。 獲取一個值,該值指定序列化程序是否可以讀取對象。 //WriteEndObject 已重載。 將結(jié)束 XML 元素寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML 文檔。 //WriteObjectContent 已重載。 將對象內(nèi)容寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML,而不寫入包裝元素。 //WriteStartObject 已重載。 寫入開始 XML 元素,以便將對象序列化為可映射到 JavaScript 對象表示法 (JSON) 的 XML。 Console.ReadKey();}}[DataContract] //對于使用DataContractJsonSerializer類而言,該屬性是必須的public class Person{public Person(int id,string name,int age){Id = id;Age = age;Name = name;}[DataMember] //對于使用DataContractJsonSerializer類而言,該屬性是必須的public int Id{get;set;}[DataMember] public string Name{get;set;}[DataMember] public int Age{get;set;}}?
分類:?前端:Json總結(jié)
以上是生活随笔為你收集整理的DataContractJsonSerializer类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《合金弹头》等 1300 款经典游戏,首
- 下一篇: 修改用户名后TSF出现需要本地工作区。工