javascript
什么是 JSON ?
什么是 JSON ?
- JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)
- JSON 是輕量級的文本數(shù)據(jù)交換格式
- JSON 獨立于語言?
- JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 語法來描述數(shù)據(jù)對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。
JSON - 轉(zhuǎn)換為 JavaScript 對象
JSON 文本格式在語法上與創(chuàng)建 JavaScript 對象的代碼相同。
由于這種相似性,無需解析器,JavaScript 程序能夠使用內(nèi)建的 eval() 函數(shù),用 JSON 數(shù)據(jù)來生成原生的 JavaScript 對象。
<html> <body> <h2>在 JavaScript 中創(chuàng)建 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.name document.getElementById("jage").innerHTML=JSONObject.age document.getElementById("jstreet").innerHTML=JSONObject.street document.getElementById("jphone").innerHTML=JSONObject.phone </script></body> </html>結(jié)果:
在 JavaScript 中創(chuàng)建 JSON 對象
Name: Bill Gates
Age: 56
Address: Fifth Avenue New York 666
Phone: 555 1234567
類似 XML
- JSON 是純文本
- JSON 具有“自我描述性”(人類可讀)
- JSON 具有層級結(jié)構(gòu)(值中存在值)
- JSON 可通過 JavaScript 進行解析
- JSON 數(shù)據(jù)可使用 AJAX 進行傳輸
相比 XML 的不同之處
- 沒有結(jié)束標(biāo)簽
- 更短
- 讀寫的速度更快
- 能夠使用內(nèi)建的 JavaScript eval() 方法進行解析
- 使用數(shù)組
- 不使用保留字
JSON 語法規(guī)則
JSON 語法是 JavaScript 對象表示法語法的子集。
- 數(shù)據(jù)在名稱/值對中
- 數(shù)據(jù)由逗號分隔
- 花括號保存對象
- 方括號保存數(shù)組
JSON 名稱/值對
JSON 數(shù)據(jù)的書寫格式是:名稱/值對。
名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值:
"firstName" : "John"這很容易理解,等價于這條 JavaScript 語句:
firstName = "John"JSON 值
JSON 值可以是:
- 數(shù)字(整數(shù)或浮點數(shù))
- 字符串(在雙引號中)
- 邏輯值(true 或 false)
- 數(shù)組(在方括號中)
- 對象(在花括號中)
- null
JSON 對象
JSON 對象在花括號中書寫:
對象可以包含多個名稱/值對:
{ "firstName":"John" , "lastName":"Doe" }這一點也容易理解,與這條 JavaScript 語句等價:
firstName = "John" lastName = "Doe"JSON 數(shù)組
JSON 數(shù)組在方括號中書寫:
數(shù)組可包含多個對象:
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }在上面的例子中,對象 "employees" 是包含三個對象的數(shù)組。每個對象代表一條關(guān)于某人(有姓和名)的記錄。
JSON 使用 JavaScript 語法
因為 JSON 使用 JavaScript 語法,所以無需額外的軟件就能處理 JavaScript 中的 JSON。
通過 JavaScript,您可以創(chuàng)建一個對象數(shù)組,并像這樣進行賦值:
例子
var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } ];可以像這樣訪問 JavaScript 對象數(shù)組中的第一項:
employees[0].lastName;返回的內(nèi)容是:
Gates可以像這樣修改數(shù)據(jù):
employees[0].lastName = "Jobs";JSON 文件
- JSON 文件的文件類型是 ".json"
- JSON 文本的 MIME 類型是 "application/json"
把 JSON 文本轉(zhuǎn)換為 JavaScript 對象
JSON 最常見的用法之一,是從 web 服務(wù)器上讀取 JSON 數(shù)據(jù)(作為文件或作為 HttpRequest),將 JSON 數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對象,然后在網(wǎng)頁中使用該數(shù)據(jù)。
為了更簡單地為您講解,我們使用字符串作為輸入進行演示(而不是文件)。
JSON 實例 - 來自字符串的對象
創(chuàng)建包含 JSON 語法的 JavaScript 字符串:
var txt = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';由于 JSON 語法是 JavaScript 語法的子集,JavaScript 函數(shù) eval() 可用于將 JSON 文本轉(zhuǎn)換為 JavaScript 對象。
eval() 函數(shù)使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:
var obj = eval ("(" + txt + ")");在網(wǎng)頁中使用 JavaScript 對象:
例子
<html> <body> <h2>通過 JSON 字符串來創(chuàng)建對象</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>結(jié)果:
通過 JSON 字符串來創(chuàng)建對象
First Name: George
Last Name: Bush
JSON 解析器
提示:eval() 函數(shù)可編譯并執(zhí)行任何 JavaScript 代碼。這隱藏了一個潛在的安全問題。
使用 JSON 解析器將 JSON 轉(zhuǎn)換為 JavaScript 對象是更安全的做法。JSON 解析器只能識別 JSON 文本,而不會編譯腳本。
在瀏覽器中,這提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
較新的瀏覽器和最新的 ECMAScript (JavaScript) 標(biāo)準(zhǔn)中均包含了原生的對 JSON 的支持。
<html> <body> <h2>通過 JSON 字符串來創(chuàng)建對象</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>結(jié)果:
通過 JSON 字符串來創(chuàng)建對象
First Name: George
Last Name: Bush
轉(zhuǎn)載于:https://www.cnblogs.com/hsw-2013/p/3966947.html
總結(jié)
以上是生活随笔為你收集整理的什么是 JSON ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 3726
- 下一篇: Spring MVC 学习 之 - 拦截