json學習筆記(一)
1、JSON簡介:
JSON: JavaScript Object Notation(JavaScript 對象表示法)
JSON 是存儲和交換文本信息的語法。類似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 實例
{ "sites": [ { "name":"華中科技大學" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
1.1 什麽是 JSON ?
- JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)
- JSON 是輕量級的文本數據交換格式
- JSON 獨立於語言:JSON 使用 Javascript語法來描述數據對象,但是 JSON 仍然獨立於語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。 目前非常多的動態(PHP,JSP,.NET)編程語言都支持JSON。
- JSON 具有自我描述性,更易理解
1.2 JSON - 轉換為 JavaScript 對象
JSON 文本格式在語法上與創建 JavaScript 對象的代碼相同。
由於這種相似性,無需解析器,JavaScript 程序能夠使用內建的 eval() 函數,用 JSON 數據來生成原生的 JavaScript 對象。
2、JSON 語法
JSON 語法是 JavaScript 語法的子集。
2.1 JSON 語法規則
JSON 語法是 JavaScript 對象表示法語法的子集。
-
數據在名稱/值對中
-
數據由逗號分隔
-
大括號保存對象
-
中括號保存數組
2.2 JSON 名稱/值對
JSON 數據的書寫格式是:名稱/值對。
名稱/值對包括字段名稱(在雙引號中),後面寫一個冒號,然後是值:
"name" : "華中科技大學" 等價於這條 JavaScript 語句:name = "菜鳥教程"
2.3 JSON 值
JSON 值可以是:
- 數字(整數或浮點數)
- 字符串(在雙引號中)
- 邏輯值(true 或 false)
- 數組(在中括號中)
- 對象(在大括號中)
- null
2.4 JSON 數字
JSON 數字可以是整型或者浮點型:{ "age":30 }
2.5 JSON 對象
JSON 對象在大括號({})中書寫:
對象可以包含多個名稱/值對:{ "name":"華中科技大學" , "url":"www.hust.edu.cn" }
2.6 JSON 數組
JSON 數組在中括號中書寫:
數組可包含多個對象
{ "sites": [ { "name":"華中科技大學" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
2.7 JSON 布爾值
JSON 布爾值可以是 true 或者 false:{ "flag":true }
2.8 JSON null
JSON 可以設置 null 值:{ "root":null }
2.9 JSON 使用 JavaScript 語法
JSON 使用 JavaScript 語法,所以無需額外的軟件就能處理 JavaScript 中的 JSON。
通過 JavaScript,您可以創建一個對象數組,並像這樣進行賦值:
var sites = [ { "name":"華中科技大學" , "url":"www.hust.edu.cn" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ];
JavaScript 對象數組中的第一項(索引從 0 開始):
sites[0].name; 返回的內容是:華中科技大學
可以像這樣修改數據: sites[0].name="清華大學";
2.10 JSON 文件
- JSON 文件的文件類型是 ".json"
- JSON 文本的 MIME 類型是 "application/json"
3 JSON 對象
語法實例:{ "name":"runoob", "alexa":10000, "site":null }
JSON 對象使用在大括號({})中書寫。
對象可以包含多個 key/value(鍵/值)對。
key 必須是字符串,value 可以是合法的 JSON 數據類型(字符串, 數字, 對象, 數組, 布爾值或 null)。
key 和 value 中使用冒號(:)分割。
每個 key/value 對使用逗號(,)分割。
3.1訪問對象值
使用點號(.)來訪問對象的值:
1 <body>
2
3 <p>你可以使用點號(.)來訪問 JSON 對象的值:</p>
4
5 <p id="demo"></p>
6
7 <script>
8
9 var myObj, x;
10 myObj = { "name":"runoob", "alexa":10000, "site":null };
11 x = myObj.name;
12 document.getElementById("demo").innerHTML = x;
13
14 </script>
15
16 </body>
使用中括號([])來訪問對象的值:
<p>你也可以使用中括號([])來訪問 JOSN 對象的值:</p>
<p id="demo"></p>
<script>
var myObj, x;
myObj = myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];
document.getElementById("demo").innerHTML = x;
</script>
3.2 循環對象
使用 for-in 來循環對象的屬性:
1 var myObj = { "name":"runoob", "alexa":10000, "site":null };
2 for (x in myObj) {
3 document.getElementById("demo").innerHTML += x + "<br>";
4 }
for-in 循環對象的屬性時,使用中括號([])來訪問屬性的值:
1 var myObj = { "name":"runoob", "alexa":10000, "site":null };
2 for (x in myObj) {
3 document.getElementById("demo").innerHTML += myObj[x] + "<br>";
4 }
3.3 嵌套 JSON 對象
JSON 對象中可以包含另外一個 JSON 對象:
1 myObj = {
2 "name":"runoob",
3 "alexa":10000,
4 "sites": {
5 "site1":"www.hust.edu.cn",
6 "site2":"m.hust.edu.cn",
7 "site3":"c.hust.edu.cn"
8 }
9 }
使用點號(.)或者中括號([])來訪問嵌套的 JSON 對象。
x = myObj.sites.site1;
// 或者
x = myObj.sites["site1"];
3.4 修改值
使用點號(.)來修改 JSON 對象的值:
myObj.sites.site1 = "www.google.com";
使用中括號([])來修改 JSON 對象的值:
myObj.sites["site1"] = "www.google.com";
3.5 刪除對象屬性
使用 delete 關鍵字來刪除 JSON 對象的屬性:
delete myObj.sites.site1;
使用中括號([])來刪除 JSON 對象的屬性:
delete myObj.sites["site1"]
3.6 json 對象和 json 字符串的區別:
json 對象
var str2 = { "name": "asan", "sex": "man" };
json字符串
var str1 = ‘{ "name": "deyuyi", "sex": "man" }‘;
json學習筆記(一)