DataContractJsonSerializer类
DataContractJsonSerializer類同樣是提供JSON序列化的類。而且貌似有幾個方法還和XML有點點關系。
注意用此類要引用System.ServiceModel.Web.dll與System.Runtime.Serialization.dll
1、屬性
  DataContractSurrogate       獲取給定 IDataContractSurrogate 實例的當前活動代理項類型。代理項可以擴展序列化或反序列化過程。?
  IgnoreExtensionDataObject     獲取一個值,指定在反序列化時是否忽略未知數(shù)據以及在序列化時是否忽略 IExtensibleDataObject 接口。
  KnownTypes            ?獲取一個類型集合,這些類型可呈現(xiàn)在使用此 DataContractJsonSerializer 實例序列化的對象圖中。?
  MaxItemsInObjectGraph       ?獲取序列化程序通過一次讀取或寫入調用在對象圖中序列化或反序列化的最大項數(shù)。
2、方法
  IsStartObject     已重載。 獲取一個值,該值指定序列化程序是否可以讀取對象。?
  ReadObject      ??已重載。 反序列化 JSON(JavaScript 對象表示法)數(shù)據,并返回反序列化的對象。?
  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ù)據以及在序列化時是否忽略 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;}}?
分類:?前端:Json總結
以上是生活随笔為你收集整理的DataContractJsonSerializer类的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 《合金弹头》等 1300 款经典游戏,首
- 下一篇: OWO 和育碧合作,将为《刺客信条:幻景
