DataContractJsonSerializer類同樣是提供JSON序列化的類。而且貌似有幾個方法還和XML有點點關系。
注意用此類要引用System.ServiceModel.Web.dll與System.Runtime.Serialization.dll
1、屬性
DataContractSurrogate 獲取給定 IDataContractSurrogate 實例的當前活動代理項類型。代理項可以擴展序列化或反序列化過程。
IgnoreExtensionDataObject 獲取一個值,指定在反序列化時是否忽略未知數(shù)據(jù)以及在序列化時是否忽略 IExtensibleDataObject 接口。
KnownTypes 獲取一個類型集合,這些類型可呈現(xiàn)在使用此 DataContractJsonSerializer 實例序列化的對象圖中。
MaxItemsInObjectGraph 獲取序列化程序通過一次讀取或寫入調用在對象圖中序列化或反序列化的最大項數(shù)。
2、方法
IsStartObject 已重載。 獲取一個值,該值指定序列化程序是否可以讀取對象。
ReadObject 已重載。 反序列化 JSON(JavaScript 對象表示法)數(shù)據(jù),并返回反序列化的對象。
WriteEndObject 已重載。 將結束 XML 元素寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML 文檔。
WriteObject 已重載。 將對象序列化為 JavaScript 對象表示法 (JSON) 文檔。
WriteObjectContent 已重載。 將對象內容寫入可映射到 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))) //構造函數(shù)能夠接受Stream參數(shù),因此你可以用內存流,文件流等等創(chuàng)建 { p = serializer.ReadObject(ms) as Person; } Console.WriteLine(p.Name); //輸出劉備 Person p2 = new Person(2, "關羽", 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":"關羽"} Console.WriteLine(serializer.MaxItemsInObjectGraph); //2147483647 獲取序列化程序通過一次讀取或寫入調用在對象圖中序列化或反序列化的最大項數(shù)。 Console.WriteLine(serializer.DataContractSurrogate); //輸出 空白 Console.WriteLine(serializer.IgnoreExtensionDataObject); //False 反序列化時是否忽略未知數(shù)據(jù)以及在序列化時是否忽略 IExtensibleDataObject 接口。 Console.WriteLine(serializer.KnownTypes.Count); //輸出 0 一個類型集合,這些類型可呈現(xiàn)在使用此 DataContractJsonSerializer 實例序列化的對象圖中。 //IsStartObject 已重載。 獲取一個值,該值指定序列化程序是否可以讀取對象。 //WriteEndObject 已重載。 將結束 XML 元素寫入可映射到 JavaScript 對象表示法 (JSON) 的 XML 文檔。 //WriteObjectContent 已重載。 將對象內容寫入可映射到 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; } }
聯(lián)系客服