淺談json以及一些常用的解析


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的一點認識。歡迎各位大大給一些指點。

如果你覺得本文對你有所幫助,就點下推薦吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM