1. 程式人生 > >json學習筆記(一)

json學習筆記(一)

對象 ide 筆記 循環 ntb flag 刪除對象 目前 3.5

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學習筆記(一)