json基礎入門


  json是什么?

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和編寫,同時也易於機器解析和生成。它基於ECMAScript的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#Java、JavaScript、PerlPython等)。這些特性使JSON成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。

 

  json的語法規則是怎樣的?

JSON 語法是 JavaScript 對象表示語法的子集。
  • 數據在鍵值對中
  • 數據由逗號分隔
  • 花括號保存對象
  • 方括號保存數組

不理解?沒關系,看圖看例子吧!

 

   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/


免責聲明!

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



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