1.什么是JSON?
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式,這意味着在 JavaScript 中處理 JSON數據不須要任何特殊的 API 或工具包。
JSON的優點:
1、基於純文本,跨平台傳遞極其簡單;
2、Javascript原生支持,后台語言幾乎全部支持;
3、輕量級數據格式,占用字符數量極少,特別適合互聯網傳遞;
4、可讀性較強,雖然比不上XML那么一目了然,但在合理的依次縮進之后還是很容易識別的;
5、容易編寫和解析,當然前提是你要知道數據結構;
JSON的缺點當然也有,但在作者看來實在是無關緊要的東西,所以不再單獨說明。
JSON的格式或者叫規則:
JSON能夠以非常簡單的方式來描述數據結構,XML能做的它都能做,因此在跨平台方面兩者完全不分伯仲。
1、JSON只有兩種數據類型描述符,大括號{}和方括號[],其余英文冒號:是映射符,英文逗號,是分隔符,英文雙引號""是定義符。
2、大括號{}用來描述一組“不同類型的無序鍵值對集合”(每個鍵值對可以理解為OOP的屬性描述),方括號[]用來描述一組“相同類型的有序數據集合”(可對應OOP的數組)。
3、上述兩種集合中若有多個子項,則通過英文逗號,進行分隔。
4、鍵值對以英文冒號:進行分隔,並且建議鍵名都加上英文雙引號"",以便於不同語言的解析。
5、JSON內部常用數據類型無非就是字符串、數字、布爾、日期、null 這么幾個,字符串必須用雙引號引起來,其余的都不用,日期類型比較特殊,這里就不展開講述了,只是建議如果客戶端沒有按日期排序功能需求的話,那么把日期時間直接作為字符串傳遞就好,可以省去很多麻煩。
JSON的示例:
在JSON中,有兩種結構:對象和數組。
1. 一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間運用 “,”(逗號)分隔。 名稱用引號括起來;值如果是字符串則必須用括號,數值型則不須要。例如:
{"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"}
2. 數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間運用 “,”(逗號)分隔。
例如:
[{"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"},{"username":"linezero","articlecount":5,"blogurl":"http://www.cnblogs.com/linezero"}]
2.JSON的解析
js對JSON的解析:
1 var str = '{"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"}'; 2 3 var data=eval("("+str+")");//轉換為json對象 4 5 alert (data.username);//會顯示出linezero
不過eval解析json有安全隱患!
現在大多數瀏覽器(IE8及以上,Chrome和Firefox差不多全部)自帶原生JSON對象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,請使用這兩個方法!
如果擔心parse()對對象拋異常,可以加一個封裝函數:
1 JSON.pParse = function(tar) { 2 if( typeof(tar) === 'string' ) { 3 return JSON.parse(tar); 4 } else { 5 return tar; 6 } 7 };
.net對JSON的解析:
1.在asp.net中的解析
1 //需要引入命名空間 2 //using System.Web.Script.Serialization; 3 4 string userdata="{\"username\":\"linezero\",\"articlecount\":3,\"blogurl\":\"http://www.cnblogs.com/linezero\"}"; 5 JavaScriptSerializer ser = new JavaScriptSerializer(); 6 UserInfo user = ser.Deserialize<UserInfo>(userdata); 7 user.username//這個輸出就是linezero 8 9 //創建一個對象類對象里面字段與JSON相同 10 public class UserInfo 11 { 12 public string username; 13 public int articlecount; 14 public string blogurl; 15 }
2.使用JSON.NET
簡而言之,這是一個可以用於.NET的Json輔助工具類。它可以將對對象序列化為json字符串。
Json.Net目前的版本是Json.NET 5.0 Release 6 下載
1 //需要引入命名空間 2 //using Newtonsoft.Json; 3 string userdata = "{\"username\":\"linezero\",\"articlecount\":3,\"blogurl\":\"http://www.cnblogs.com/linezero\"}"; 4 UserInfo user=JsonConvert.DeserializeObject<UserInfo>(userdata);//將json轉成UserInfo對象 5 Console.WriteLine(user.username);//輸出linezero 6 7 //創建一個對象類對象里面字段與JSON相同 8 public class UserInfo 9 { 10 public string username; 11 public int articlecount; 12 public string blogurl; 13 }
以上就是我對JSON的一點認識。歡迎各位大大給一些指點。
如果你覺得本文對你有所幫助,就點下推薦吧。