Json的序列化和還原序列化

來源:互聯網
上載者:User

標籤:

一.什麼是Json:

   Json【javascript對象表示方法】,它是一個輕量級的資料交換格式,我們可以很簡單的來讀取和寫它,並且它很容易被電腦轉化和產生

二.Json的表現形式:

  1. 對象:
    • var user = {"name":"fxhl","gender":"Male","qq":"1123166772"}
  2. 數組:
    • var userlist = [{"user":{"name":"fxhl","gender":"Male"}}, 


      {"user":{"name":"Mohapatra","Male":"Female"}]

  3. 字串:
    • var userlist = "{\"ID\":1,\"Name\":\"Manas\",\"Address\":\"India\"}" 

三.Json序列化和還原序列化的三種方式

1.使用JavaScriptSerializer類:

//使用JavaScriptSerializer方式需要引入的命名空間,這個在程式集System.Web.Extensions.dll.中

using System.Web.Script.Serialization;

 1 class Program 2 { 3     static void Main(string[] args) 4     { 5         //序列化操作 6         JavaScriptSerializer jss = new JavaScriptSerializer(); 7         var json = new { name = "fxhl", age = 23 };            8         string str = jss.Serialize(json);   9         //還原序列化操作10         Person person = jss.Deserialize<Person>(str);11         Console.WriteLine(person.name);12     }13 }  14 [Serializable]      15 public class Person16 {17     public string name { get; set; }18     public int age { get; set; }19 }

2.使用DataContractJsonSerializer類:

 //Person實體中的契約 [DataMember],[DataContract],是使用DataContractJsonSerializer序列化和還原序列化必須要加的

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

 using System.Runtime.Serialization.Json;

 1     static void Main(string[] args) 2     { 3         //序列化操作 4         Person p1 = new Person() 5         { 6             name = "fxhl", 7             age = 23 8         }; 9         DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Person));10         MemoryStream msObj = new MemoryStream();11         //將序列化之後的Json格式資料寫入流中12         js.WriteObject(msObj, p1);13         //從0這個位置開始讀取流中的資料14         msObj.Position = 0;     15         StreamReader sr = new StreamReader(msObj, Encoding.UTF8);16         string json = sr.ReadToEnd();17         Console.WriteLine(json);18         sr.Close();19         msObj.Close();20         //還原序列化操作21         using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))22         {23             DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Person));24             Person model = (Person)deseralizer.ReadObject(ms);// //還原序列化ReadObject25             Console.WriteLine(model.name);26         }27         Console.ReadKey();28     }29 }30 [DataContract]     31 public class Person32 {33     [DataMember]34     public string name { get; set; }35     [DataMember]36     public int age { get; set; }37 }

3.使用JSON.NET類庫:

引入類庫:

//使用Json.NET類庫需要引入的命名空間

 1 class Program 2 { 3 static void Main(string[] args) 4 { 5     //序列化操作 6     var json = new { user = new { name = "fxhl", age = 23 }}; 7     string jsonData = JsonConvert.SerializeObject(json); 8     Console.WriteLine(jsonData); 9     //還原序列化操作方法一10     Person p1= JsonConvert.DeserializeObject<Person>(jsonData);11     Console.WriteLine(p1.user.name);12     //還原序列化操作方法二13     string json2 = "[{\"user\":{\"name\":\"fxhl\",\"age\":23}}]";14     List<Person> listp2= JsonConvert.DeserializeObject<List<Person>>(json2);15     Console.WriteLine(listp2[0].user.name);16     Console.ReadKey();17 }18 }19 public class Person20 {21     public Person user { get; set; }22     public string name { get; set; }23     public int age { get; set; }24 }

 

 總結:最後還是盡量使用JSON.NET來序列化和還原序列化,效能好。

 

Json的序列化和還原序列化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.