JSON 即 JavaScript Object Natation,它是一種輕量級的資料交換格式,非常適合於伺服器與 JavaScript 的互動。和 XML 一樣,JSON 也是基於純文字的資料格式。詳細資料請點選:https://www.ibm.com/developerworks/cn/web/wa-lo-json/
由於 JSON 天生是為 JavaScript 準備的,因此,JSON 的資料格式非常簡單,您可以用 JSON 傳輸一個簡單的 String,Number,Boolean,也可以傳輸一個陣列,或者一個複雜的 Object 物件。
在.NET環境下面,我們使用Json.net來實現JSON資料的序列化和反序列化。
首先點選連線http://sourceforge.net/projects/csjson/?source=dlp 下載JSON .NET外掛和程式碼。
然後在專案中進行引用Newtonsoft.Json.dll
新增名稱空間:using Newtonsoft.Json;
下面介紹json序列化和反序列化的放個重要方法和例子:
//序列化 JsonConvert.SerializeObject(object value) //過載方法 JsonConvert.SerializeObject(object value, params JsonConverter[] converters) //反序列化 JsonConvert.DeserializeObject(string value, Type type) //過載方法JsonConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)
這兩個方法可以實現基本的序列化和反序列化要求,請看下面的例子:
首先我們先建一個Person類程式碼如下:
public class Person { private string name; public string Name { get { return name; } set { name = value; } } private int age; public int Age { get { return age; } set { age = value; } } }
序列化
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Newtonsoft.Json; namespace JSONnet { public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Person person = new Person(); person.Name = "GoldenEasy"; person.Age = 25; string strSerializeJSON = JsonConvert.SerializeObject(person); Response.Write(strSerializeJSON); } } }
輸出結果:
{"Name":"GoldenEasy","Age":25}
反序列化:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Newtonsoft.Json; namespace JSONnet { public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Person person = new Person(); person.Name = "GoldenEasy"; person.Age = 25; string strSerializeJSON = JsonConvert.SerializeObject(person); Person user = (Person)JsonConvert.DeserializeObject(strSerializeJSON, typeof(Person)); Response.Write(user.Name); } } }
輸出結果為:GoldenEasy