json是什么?
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和編寫,同時也易於機器解析和生成。它基於ECMAScript的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。
json的語法規則是怎樣的?
-
數據在鍵值對中
-
數據由逗號分隔
-
花括號保存對象
-
方括號保存數組
不理解?沒關系,看圖看例子吧!

json和XML的關系

語法對比:

json的解析和生成
在JavaScript中,有兩個方法於此相關:JSON.parse和JSON.stringify。

json格式規定

相關代碼:


數組里面可以存放數字、字符、對象、另一個數組等:


json字符串轉化成對象
解析:是指將符合json語法規則的字符串轉換成對象的過程。在JavaScript中的解析方法主要有三種:
1、使用eval。因為eval()是一個相對危險的函數,字符串中可能含有未知的因素,所以目前很少直接使用eval()來解析json字符串,除非你的瀏覽器版本十分舊。

試想如果不加eval()函數中的那對括號,會發生什么?
2、使用JSON.parse()。現在絕大多數瀏覽器都支持JSON.parse(),是推薦使用的方式。如果輸入了不符合規范的字符串,會報錯。JSON.parse()可以有第二參數,是一個函數。此函數有兩個參數:name和value,分別代表名稱和值。當傳入一個JSON字符串后,JSON的每一組名稱/值對都要調用此函數。該函數有返回值,返回值將賦值給當前的名稱(name)。利用第二個參數,可以在解析JSON字符串的同時對數據進行一些處理。
例1:

例2:

3、使用第三方庫,例如jquery等。
對象轉化為字符串
俗稱序列化,指將JavaScript值轉化為JSON字符串的過程。JSON.stringify()能夠將JavaScript值轉換成JSON字符串。JSON.stringify()生成的字符串可以用JSON.parse()再還原成JavaScript值。

value的用法:

replace的用法1:

replace的用法2:

space用法:

JSON和XML的轉換
步驟如下:
1、下載相關文件(jquery、jquery.json2xml.js、jquery.xml2json.js);
2、XML字符串轉換成JSON對象($.xml2json(str));
3、JSON對象轉換成XML字符串($.json2xml(obj));


Ajax和JSON
JSON文件被放置在服務器端,客戶端請求該文件用得最多的是Ajax,能夠實現異步請求。
1、什么是Ajax?
AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。AJAX 是一種用於創建快速動態網頁的技術。通過在后台與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。
2、創建和使用Ajax
創建Ajax對象要考慮瀏覽器的版本問題,主要分為兩大類:IE7+/Chrome/Firefox/..和IE6/IE5

判斷請求是否獲得響應:

完整代碼:


json的兩種擴展格式
GeoJSON和TopoJSON是符合語法規則的兩種數據格式,用於標識地理信息。
1、GeoJSON:是用於描述地理空間信息的數據格式。它不是一種的格式,其語法規范是符合JSON格式的,只不過對其名稱進行了規范,專門用於表示地理信息。

例子1:

例子2:

發現1:

發現2:

2、ToPoJSON:

相關鏈接:
json在線編輯器和驗證器:http://json.cn/
geojson在線編輯器和查看器:http://geojson.io/
geojson和Topojson轉化的工具:http://mapshaper.org/
