JSON(來自ww3school)

來源:互聯網
上載者:User

標籤:ntb   類型   list   邏輯   產生   等價   遍曆   ota   簡介   

JSON:JavaScript 物件標記法(JavaScript Object Notation)。

JSON 是儲存和交換文本資訊的文法。類似 XML。

JSON 比 XML 更小、更快,更易解析。

{    "employees":  [        { "firstName":"Bill" , "lastName":"Gates" },        { "firstName":"George" , "lastName":"Bush" },        { "firstName":"Thomas" , "lastName":"Carter" }    ]}

 

這個 employee 對象是包含 3 個員工記錄(對象)的數組。

 

什麼是 JSON ?
  • JSON 指的是 JavaScript 物件標記法(JavaScript Object Notation)
  • JSON 是輕量級的文本資料交換格式
  • JSON 獨立於語言 *
  • JSON 具有自我描述性,更易理解

* JSON 使用 JavaScript 文法來描述資料對象,但是 JSON 仍然獨立於語言和平台。JSON 解析器和 JSON 庫支援許多不同的程式設計語言。

<html><body><h2>在 JavaScript 中建立 JSON 對象</h2><p>Name: <span id="jname"></span><br />Age: <span id="jage"></span><br />Address: <span id="jstreet"></span><br />Phone: <span id="jphone"></span><br /></p><script type="text/javascript">var JSONObject= {"name":"Bill Gates","street":"Fifth Avenue New York 666","age":56,"phone":"555 1234567"};document.getElementById("jname").innerHTML=JSONObject.namedocument.getElementById("jage").innerHTML=JSONObject.agedocument.getElementById("jstreet").innerHTML=JSONObject.streetdocument.getElementById("jphone").innerHTML=JSONObject.phone</script></body></html>
類似 XML
  • JSON 是純文字
  • JSON 具有“自我描述性”(人類可讀)
  • JSON 具有層級結構(值中存在值)
  • JSON 可通過 JavaScript 進行解析
  • JSON 資料可使用 AJAX 進行傳輸
相比 XML 的不同之處
  • 沒有結束標籤
  • 更短
  • 讀寫的速度更快
  • 能夠使用內建的 JavaScript eval() 方法進行解析
  • 使用數組
  • 不使用保留字
為什麼使用 JSON?

對於 AJAX 應用程式來說,JSON 比 XML 更快更易使用:

使用 XML
  • 讀取 XML 文檔
  • 使用 XML DOM 來迴圈遍曆文檔
  • 讀取值並儲存在變數中
使用 JSON
  • 讀取 JSON 字串
  • 用 eval() 處理 JSON 字串

 

JSON 文法
  • JSON 簡介
  • JSON 使用

JSON 文法是 JavaScript 文法的子集。

JSON 文法規則

JSON 文法是 JavaScript 物件標記法文法的子集。

  • 資料在成對的名稱和數值中
  • 資料由逗號分隔
  • 花括弧儲存對象
  • 方括弧儲存數組
JSON 成對的名稱和數值

JSON 資料的書寫格式是:成對的名稱和數值。

成對的名稱和數值包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值:

"firstName" : "John"

這很容易理解,等價於這條 JavaScript 語句:

firstName = "John"
JSON 值

JSON 值可以是:

  • 數字(整數或浮點數)
  • 字串(在雙引號中)
  • 邏輯值(true 或 false)
  • 數組(在方括弧中)
  • 對象(在花括弧中)
  • null
JSON 對象

JSON 對象在花括弧中書寫:

對象可以包含多個成對的名稱和數值:

{ "firstName":"John" , "lastName":"Doe" }

這一點也容易理解,與這條 JavaScript 語句等價:

firstName = "John"lastName = "Doe"
JSON 數組

JSON 數組在方括弧中書寫:

數組可包含多個對象:

{"employees": [{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]}

在上面的例子中,對象 "employees" 是包含三個對象的數組。每個對象代表一條關於某人(有姓和名)的記錄。

JSON 使用 JavaScript 文法

因為 JSON 使用 JavaScript 文法,所以無需額外的軟體就能處理 JavaScript 中的 JSON。

通過 JavaScript,您可以建立一個對象數組,並像這樣進行賦值:

例子
var employees = [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName": "Carter" }];

可以像這樣訪問 JavaScript 對象數組中的第一項:

employees[0].lastName;

返回的內容是:

Gates

可以像這樣修改資料:

employees[0].lastName = "Jobs";

JSON 檔案
  • JSON 檔案的檔案類型是 ".json"
  • JSON 文本的 MIME 類型是 "application/json"
 JSON 使用把 JSON 文本轉換為 JavaScript 對象

JSON 最常見的用法之一,是從 網頁伺服器上讀取 JSON 資料(作為檔案或作為 HttpRequest),將 JSON 資料轉換為 JavaScript 對象,然後在網頁中使用該資料。

為了更簡單地為您講解,我們使用字串作為輸入進行示範(而不是檔案)。

JSON 執行個體 - 來自字串的對象

建立包含 JSON 文法的 JavaScript 字串:

var txt = ‘{ "employees" : [‘ +‘{ "firstName":"Bill" , "lastName":"Gates" },‘ +‘{ "firstName":"George" , "lastName":"Bush" },‘ +‘{ "firstName":"Thomas" , "lastName":"Carter" } ]}‘;

由於 JSON 文法是 JavaScript 文法的子集,JavaScript 函數 eval() 可用於將 JSON 文本轉換為 JavaScript 對象。

eval() 函數使用的是 JavaScript 編譯器,可解析 JSON 文本,然後產生 JavaScript 對象。必須把文本包圍在括弧中,這樣才能避免語法錯誤:

var obj = eval ("(" + txt + ")");

在網頁中使用 JavaScript 對象:

例子
<html><body><h2>通過 JSON 字串來建立對象</h3><p>First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript">var txt = ‘{"employees":[‘ +‘{"firstName":"Bill","lastName":"Gates" },‘ +‘{"firstName":"George","lastName":"Bush" },‘ +‘{"firstName":"Thomas","lastName":"Carter" }]}‘;var obj = eval ("(" + txt + ")");document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script></body></html>

親自試一試

JSON 解析器

提示:eval() 函數可編譯並執行任何 JavaScript 代碼。這隱藏了一個潛在的安全問題。

使用 JSON 解析器將 JSON 轉換為 JavaScript 對象是更安全的做法。JSON 解析器只能識別 JSON 文本,而不會編譯指令碼。

在瀏覽器中,這提供了原生的 JSON 支援,而且 JSON 解析器的速度更快。

較新的瀏覽器和最新的 ECMAScript (JavaScript) 標準中均包含了原生的對 JSON 的支援。

網頁瀏覽器支援 Web 軟體支援
  • Firefox (Mozilla) 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
  • jQuery
  • Yahoo UI
  • Prototype
  • Dojo
  • ECMAScript 1.5
<html><body><h2>通過 JSON 字串來建立對象</h3><p>First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript">var txt = ‘{"employees":[‘ +‘{"firstName":"Bill","lastName":"Gates" },‘ +‘{"firstName":"George","lastName":"Bush" },‘ +‘{"firstName":"Thomas","lastName":"Carter" }]}‘;obj = JSON.parse(txt);document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script></body></html>

 

JSON(來自ww3school)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.