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":"doubleone","articlecount":3,"blogurl":"http://blog.csdn.net/yishuangjia"}
2. 數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間運用 “,”(逗號)分隔。
例如:
[{"username":"doubleone","articlecount":3,"blogurl":"http://blog.csdn.net/yishuangjia"},{"username":"doubleone","articlecount":5,"blogurl":"http://blog.csdn.net/yishuangjia"}]
2.JSON的解析
js對JSON的解析:
var str = '{"username":"doubleone","articlecount":3,"blogurl":"http://blog.csdn.net/yishuangjia"}'; var data=eval("("+str+")");//轉換爲json對象 alert (data.username);//會顯示出doubleone
不過eval解析json有安全隱患!
現在大多數瀏覽器(IE8及以上,Chrome和Firefox差不多全部)自帶原生JSON對象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,請使用這兩個方法!
如果擔心parse()對對象拋異常,可以加一個封裝函數:
.net對JSON的解析:
1.在asp.net中的解析
2.使用JSON.NET
簡而言之,這是一個可以用於.NET的Json輔助工具類。它可以將對對象序列化爲json字符串。
Json.Net目前的版本是Json.NET 5.0 Release 6
以上就是JSON的一點認識。歡迎各位大大給一些指點。