JSON(JavaScript Object Notation)——JavaScript對象表示法,是JavaScript用來
處理數據的一種格式,大部分是用來處理JavaScript和web服務器端之間的數據交換,把后台web服務器的數據傳遞到前台,然后使用JavaScript進行處理,例如ajax等,是獨立於語言和平台的輕量級的數據交換格式
。
JSON的數據類型:
- number:和JavaScript的number完全一致;
- boolean:就是JavaScript的true或false;
- string:就是JavaScript的string;
- null:就是JavaScript的null;
- array:就是JavaScript的Array表示方式——[];
- object:就是JavaScript的{ ... }表示方式。
以及上面的任意組合。並且,JSON還定死了字符集必須是UTF-8。為了統一解析,JSON的字符串規定必須用雙引號"",Object的鍵也必須用雙引號"",如果JSON中含有轉義字符,則需要轉義。
1、使用 JavaScriptSerializer類實現序列化
namespace: System.Web.Script.Serialization
eg:
1 // 序列化 2 private string ObjectToJson(Person obj) 3 { 4 JavaScriptSerializer jsonSerialize = new JavaScriptSerializer(); 5 return jsonSerialize.Serialize(obj); 6 } 7 // 反序列化 8 private Person JsonToObject(string jsonStr) 9 { 10 JavaScriptSerializer jsonSerialize = new JavaScriptSerializer(); 11 return jsonSerialize.Deserialize<Person>(jsonStr); 12 }
注:可用 [ScriptIgnore] 標記不序列化的屬性
2、使用 DataContractJsonSerializer類實現序列化
namespace:System.Runtime.Serialization.Json
eg:
1 // 序列化 2 using (MemoryStream stream =new MemoryStream()) 3 { 4 DataContractJsonSerializer jsonSerialize =new DataContractJsonSerializer(Person); 5 jsonSerialize.WriteObject(stream, obj); 6 jsonStr = Encoding.UTF8.GetString(stream.ToArray()); 7 } 8 // 反序列化 9 using (MemoryStream stream =new MemoryStream(Encoding.UTF8.GetBytes(jsonStr))) 10 { 11 DataContractJsonSerializer jsonSerialize =new DataContractJsonSerializer(Person); 12 obj = (Person)jsonSerialize.ReadObject(stream); 13 }
注:可用 [IgnoreDataMember] 標記不序列化的屬性
3、使用開源類庫Newtonsoft.Json實現序列化
namespace:Newtonsoft.Json
eg:
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Linq; 5 using System.Web; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8 using Newtonsoft.Json; 9 using Newtonsoft.Json.Linq; 10 11 namespace DataInterface 12 { 13 public partial class UserLogin : System.Web.UI.Page 14 { 15 protected void Page_Load(object sender, EventArgs e) 16 { 17 string errMsg = string.Empty; 18 if (Request["JsonString"] != null) 19 { 20 string jsonString = Request["JsonString"].ToString(); 21 JObject array; 22 string userName = string.Empty, password = string.Empty; 23 try 24 { 25 array = (JObject)JsonConvert.DeserializeObject(jsonString); 26 userName = array["userName"].ToString().Trim('"'); 27 password = array["password"].ToString().Trim('"').ToUpper(); 28 } 29 catch 30 { 31 errMsg = "傳入參數錯誤"; 32 } 33 } 34 } 35 } 36 }
1 string jsonText = string.Empty; 2 StringWriter sw = new StringWriter(); 3 JsonWriter writer = new JsonTextWriter(sw); 4 5 writer.WriteStartObject(); 6 writer.WritePropertyName("result"); 7 writer.WriteValue("1"); 8 writer.WritePropertyName("msg"); 9 writer.WriteValue("sucess"); 10 writer.WriteEndObject(); 11 writer.Flush(); 12 jsonText = sw.GetStringBuilder().ToString();