Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲激情视频网,天天干天天弄,99久9在线|免费

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「JavaScript 從入門到精通」16.JSON對象介紹

          置知識:

          JSON是一種按照JavaScript對象語法的數據格式。

          1.概念

          概念有三點:

          JSON全稱JavaScript 對象表示法(JavaScript Object Notation)。

          JSON 是存儲和交換文本信息的語法。類似 XML。

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

          ———— 摘自 W3school JSON教程

          JSON 使用 JavaScript 語法來描述數據對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。

          2.語法

          JSON在使用過程中可作為一個對象或者字符串存在,當作為對象時,用于獲取JSON中的數據,而作為字符串時常用于網絡數據傳輸。

          JSON語法規則:

          1. 數據在名稱/值對中
          2. 數據由逗號分隔
          3. 花括號保存對象
          4. 方括號保存數組

          通常,JSON數據書寫格式是名稱/鍵值:

          "name" : "pingan"
          

          而JSON的值可以是 :

          1. 數字(整數或浮點數)
          2. 字符串(在雙引號中)
          3. 邏輯值(true 或 false)
          4. 數組(在方括號中)
          5. 對象(在花括號中)
          6. null

          JSON常常有三種類型:

          三種類型:簡單之,對象和數組。

          必須注意:JSON字符串必須是雙引號,單引號會語法錯誤。

          2.1 簡單值

          簡單值可以是字符串:

          "hello leo!"
          

          也可以是數字,邏輯值:

          1
          

          2.2 對象類型

          內容放在花括號內,是多個鍵值對。

          JSON對象 與 js 對象的三個區別:

          1. JSON對象 必須加雙引號,而 js 對象屬性名可以不加雙引號。
          2. JSON對象 沒有變量聲明,而 js 對象有。
          3. JSON對象 沒有分號,而 js 對象有。

          2.3 數組類型

          內容放在方括號內。

          JSON數組也沒有分號和變量,常常可以把JSON數組和對象結合使用,構成更復雜的數據集合。

          3. 使用

          JSON最常見的用法就是,從服務端獲取JSON數據,再將JSON數據轉成JavaScrip對象使用。

          JSON對象有兩個方法:

          • JSON.stringify(): 序列化操作,將JavaScript對象轉換成JSON字符串。
          • JSON.prase():反序列化操作,將JSON字符串解析成JavaScript值。

          3.1 序列化操作

          序列化操作常常使用JSON.stringify()。

          簡單例子:

          注意:

          1. 默認情況下,JSON.stringify()輸出的JSON字符串不包含任何空格字符或縮進,因此結果就像上面那樣。
          2. 序列化JavaScript對象時,所有函數及原型成員都會被忽略,不體現在結果上。
          3. 值為undefined的任何屬性都會被跳過。

          因此,最終的值都是有效的JSON數據類型的實例屬性。

          3.2 反序列化操作

          序列化操作常常使用JSON.parse()。

          簡單例子:

          如果傳入JSON.parse()的字符串不是有效的JSON,則會拋出錯誤。

          注意:

          雖然pingan和copyPingan屬性相同,但兩者獨立,沒有任何關系。

          4.序列化選項

          JSON.stringify()除了要傳入序列化對象作為參數,還可以接收其他兩個參數,用來指定序列化JavaScript對象的方式:

          1. 過濾器:可以是個數組,也可以是個函數。
          2. 選項:表示是否在JSON字符串中保留縮進。

          單獨或組合使用兩者,可以更加全面深入的控制JSON的序列化。

          4.1 過濾器

          若過濾器的參數是數組,則JSON.stringify()返回的結果將只包含數組中的屬性:

          若過濾器的參數是函數,則情況就不一樣了,傳入的函數需有兩個參數(屬性名和屬性值):

          注意:使用switch的時候,必須指定default否則會返回undefined。

          4.2 選項

          JSON.stringify()第三個參數是個選項,控制結果中的縮進和空白符。

          1. 若選項只有一個值,則表示每個級別縮進的空格數,最大值為10,超過10則只會是10。

          5.解析選項

          JSON.parse()可以接收一個函數作為參數,對每個鍵值對調用,為了跟JSON.stringify()的過濾函數區別,這個函數成為還原函數。

          • 若還原函數返回undefined,則表示要從結果中刪除對應的鍵。
          • 若還原函數返回其他值,則將該值插入結果中。

          還原函數接收兩個參數:屬性名和屬性值。

          舉例,在日期字符串轉換為Date對象中,經常要用到還原函數:

          公眾號:前端自習課

          往期回顧

          「JavaScript 從入門到精通」1.語法和數據類型

          「JavaScript 從入門到精通」2.流程控制和錯誤處理

          「JavaScript 從入門到精通」3.循環和迭代

          「JavaScript 從入門到精通」4.函數

          「JavaScript 從入門到精通」5.表達式和運算符

          「JavaScript 從入門到精通」6.數字

          「JavaScript 從入門到精通」7.時間對象

          「JavaScript 從入門到精通」8.字符串

          「JavaScript 從入門到精通」9.正則表達式

          「JavaScript 從入門到精通」10.數組

          「JavaScript 從入門到精通」11.Map和Set對象

          「JavaScript 從入門到精通」12.使用對象

          「JavaScript 從入門到精通」13.迭代器和生成器

          「JavaScript 從入門到精通」14.元編程

          「JavaScript 從入門到精通」15.JS對象介紹

          JavaScript中,你可以使用in運算符或hasOwnProperty()方法來檢查一個JSON對象是否包含某個屬性(字段)。如果對象包含該字段,你可以直接使用點符號(.)或方括號([])表示法來讀取它的值。

          以下是使用in運算符和hasOwnProperty()方法檢查對象屬性并讀取其值的示例程序:

          // 假設我們有一個JSON對象  
          var jsonObject = {  
              "name": "Alice",  
              "age": 30,  
              "city": "New York"  
          };  
            
          // 要檢查的字段名  
          var fieldName = "age";  
            
          // 使用 'in' 運算符檢查字段是否存在  
          if (fieldName in jsonObject) {  
              console.log("字段 '" + fieldName + "' 存在,其值為:" + jsonObject[fieldName]);  
          } else {  
              console.log("字段 '" + fieldName + "' 不存在");  
          }  
            
          // 或者使用 'hasOwnProperty()' 方法檢查字段是否存在  
          if (jsonObject.hasOwnProperty(fieldName)) {  
              console.log("字段 '" + fieldName + "' 存在,其值為:" + jsonObject.age);  
              // 或者使用動態屬性訪問方式  
              console.log("字段 '" + fieldName + "' 存在,其值為:" + jsonObject[fieldName]);  
          } else {  
              console.log("字段 '" + fieldName + "' 不存在");  
          }  
            
          // 如果要讀取的字段名是動態的,則必須使用方括號表示法  
          var dynamicFieldName = "city";  
          if (dynamicFieldName in jsonObject) {  
              console.log("動態字段 '" + dynamicFieldName + "' 存在,其值為:" + jsonObject[dynamicFieldName]);  
          }

          在這個示例中,我們首先定義了一個名為jsonObject的JSON對象,然后定義了一個要檢查的字段名fieldName。我們使用in運算符和hasOwnProperty()方法來檢查該字段是否存在于對象中。如果存在,我們就使用點符號(在字段名已知且不是動態的情況下)或方括號表示法(在字段名是動態的情況下)來讀取它的值。

          請注意,雖然在這個例子中我們使用了術語“JSON對象”,但實際上jsonObject是一個普通的JavaScript對象。在JavaScript中,JSON(JavaScript Object Notation)通常用于表示數據的序列化格式,即字符串形式的對象表示。但是,一旦JSON字符串被解析成JavaScript對象(例如,通過JSON.parse()方法),你就可以像處理任何其他JavaScript對象一樣處理它。

          SON對象是什么?

          JSON代表JavaScript對象表示法,是一種基于JavaScript對象語法的結構化數據的標準文本格式。JSON僅定義了兩種數據結構:對象和數組。JSON對象是由花括號括起來的鍵/值對組成的數據類型。JSON數組是值的列表。當數據從服務器發送到網頁或在文件或數據庫中存儲數據時,通常會使用JSON對象。JSON與JavaScript對象文字語法非常相似,但可以獨立于JavaScript使用。許多編程環境支持讀取和生成JSON。

          JSON對象的特點

          • 它們以逗號分隔的鍵/值對形式編寫。鍵是用雙引號括起來的字符串,值必須是以下JSON數據類型字符串數字對象數組布爾值空值
          • 它們由花括號{}括起來。花括號也可以用于在對象內部嵌套對象,從而創建分層結構。
          • 數組用方括號[]括起來,它們的值用逗號(,)分隔。數組中的每個值可以是不同的類型,包括另一個數組或對象。
          • 它們區分大小寫,這意味著鍵和值在拼寫和大小寫上必須完全匹配。
          • 它們不允許尾隨逗號。簡單來說,花括號外部或雙引號內部不應該有任何不屬于鍵/值對的文本。
          • 它們不允許注釋。

          JSON提供了幾個優點,使其成為表示結構化數據的熱門選擇:

          • 簡單易讀:JSON簡單直觀,易于理解。與XML等更冗長的格式不同,JSON相對容易閱讀。其簡潔的語法允許高效的數據表示。
          • 解析簡便:JSON的解析比XML更簡單快速。
          • 靈活性:JSON支持各種數據類型和對象層次結構,并且關系可以在傳輸過程中保持并在接收端適當地重新組裝。
          • 廣泛應用:大多數現代API接受JSON請求并發出JSON響應,使其成為系統之間數據交換的通用格式。

          JSON對象示例


          基本JSON對象:{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null}

          嵌套JSON對象:這是一種由名稱/值對列表組成的數據類型,其中一個或多個值是另一個JSON對象。{"person": {"name": "Natalie", "age": 21}, "address": {"street": "123 XYZ Street", "City": "New York", "State" : "NY", "zip": "10001"}}

          JSON對象數組:[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]

          解析JSON對象

          解析是將JSON對象轉換為本機JavaScript對象的方法。

          JSON.parse()方法:JSON.parse()方法解析字符串并返回一個JavaScript對象。字符串必須是JSON格式。

          語法:JSON.parse(string, function)

          參數

          必需/可選

          描述

          字符串

          必需

          以JSON格式編寫的字符串

          Reviver函數

          可選

          一個接受鍵和值作為參數并返回修改后的值或undefined以刪除屬性的函數。對每個項目調用該函數。任何嵌套對象在父對象之前轉換。

          示例

          var text = '{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null}';
          var obj = JSON.parse(text, function (key, value) {
               if (key === "name") {
                 return value.toUpperCase();
               } else {
                 return value;
               }
          });
          console.log(obj);

          輸出

          {
               name: 'NATALIE',
               married: false,
               age: 21,
               city: 'New York',
               zip: '10001',
               awards: null
          }

          JSON.stringify()方法

          該方法將JavaScript對象轉換為字符串。在將數據發送到Web服務器時,數據必須是字符串。JSON.stringify()也適用于數組。

          語法:JSON.stringify(obj, replacer, space)

          參數

          必需/可選

          描述

          Obj

          必需

          要轉換為字符串的值

          Replacer

          可選

          用于轉換結果的函數或數組。對每個項目調用replacer。

          Space

          可選

          用作空格的字符串(最多10個字符)或數字,從0到10,表示要用作空格的空格字符數。

          示例

          var obj = {"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
          var text = JSON.stringify(obj, function (key, value) {
               if (key === "name") {
                 return value.toUpperCase();
               } else {
                 return value;
               }
          });
          console.log(text);

          輸出

          {"name":"NATALIE","married":false,"age":21,"city":"New York","zip":"10001","awards":null}

          /*為每個空格插入單詞SPACE:*/
          var newText = JSON.stringify(obj, null, "space");
          console.log(“Text with the word space “+ newText);

          輸出

          Text with the word space {
          space"name": "Natalie",
          space"married": false,
          space"age": 21,
          space"city": "New York",
          space"zip": "10001",
          space"awards": null
          }

          JSON對象導航

          可以使用點(.)或方括號([])表示法導航到其屬性并訪問它們的值。

          // 使用點表示法訪問名稱
          var obj = {"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
          console.log(obj.name);                      輸出:Natalie
          // 使用點表示法訪問城市
          console.log(obj["city"];                      輸出:New York
          var obj_array = [ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]
          // 使用點和方括號表示法訪問第一個成員的名稱
          console.log(obj_array[0].name);       輸出:Natalie
          // 使用點和方括號表示法訪問第二個成員的年齡
          console.log(obj_array[1][ "age"]);     輸出:37

          Object.keys()方法

          keys()方法返回給定對象的自身可枚舉字符串鍵屬性的數組。作為靜態方法的keys()方法使用Object類名調用。

          語法:Object.keys(obj)

          參數

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對象

          Object.values()方法

          values()方法返回給定對象的自身可枚舉字符串鍵屬性值的數組。作為靜態方法的values()方法使用Object類名調用。

          語法:Object.values(obj)

          參數

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對象

          Object.entries()方法

          該方法返回對象的可枚舉屬性的鍵值對數組。作為靜態方法的entries()方法使用Object類名調用。

          語法:Object.entries(obj)

          參數

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對象

          示例

          var obj = {"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
          var keys = Object.keys(obj);
          var values = Object.values(obj);
          var entries = Object.entries(obj);
          console.log("Array of keys :");
          console.log(keys);
          console.log("Array of values :");
          console.log(values);
          console.log("Array of entries :");
          console.log(entries);

          輸出

          Array of keys :
          [ 'name', 'married', 'age', 'city', 'zip', 'awards' ]
          Array of values :
          [ 'Natalie', false, 21, 'New York', '10001', null ]
          Array of entries :
          [
               [ 'name', 'Natalie' ],
               [ 'married', false ],
               [ 'age', 21 ],
               [ 'city', 'New York' ],
               [ 'zip', '10001' ],
               [ 'awards', null ]
          ]

          for循環

          for循環重復執行,直到指定的條件評估為false。

          語法:for (初始化; 條件; 表達式) {要執行的代碼塊}

          參數

          必需/可選

          描述

          初始化

          必需

          在執行代碼塊之前執行一次

          條件

          必需

          執行代碼塊的條件

          表達式

          必需

          在執行代碼塊后每次執行

          示例

          var obj = [ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
          for(var i=0; i<obj.length; i++) {
                     console.log("Name:  " + obj[i]["name"]); //使用方括號表示法
                     console.log("Married Status:     " + obj[i].married); //使用點表示法
          }

          輸出

          輸出
          Name:     Natalie
          Married Status:  true
          Name:     David
          Married Status:  false
          Name:     Mark
          Married Status:  true

          for…in循環

          for...in語句遍歷對象的所有可枚舉字符串非符號屬性,包括繼承的可枚舉屬性。循環內部的代碼塊對每個屬性執行一次。

          語法:for (item in object) {要執行的代碼塊}

          參數

          必需/可選

          描述

          item

          必需

          用于迭代屬性的變量

          object

          必需

          要迭代的對象

          示例

          var obj = [ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
          for(item in obj) {
                     console.log("Name:  " + obj[item]["name"]); //使用方括號表示法
                     console.log("Married Status:     " + obj[item].married); //使用點表示法
          }

          輸出

          Name:     Natalie
          Married Status:  true
          Name:     David
          Married Status:  false
          Name:     Mark
          Married Status:  true

          for…of循環

          for..of循環按順序操作來自可迭代對象的值。

          語法:array.forEach(iterable object) {statement}

          參數

          必需/可選

          描述

          Variable

          必需

          對于每次迭代,下一個屬性的值被賦給變量。變量可以使用const、let或var聲明。

          Iterable object

          必需

          循環操作的值來源。

          Name: Natalie
          Married Status: true
          Name: David
          Married Status: false
          Name: Mark
          Married Status: true

          ## `forEach()`**方法** 
          
          `forEach()`方法對數組中的每個元素調用一個函數。它必須至少接受一個參數,該參數表示數組的元素。
          
          *語法:*`array.forEach(function(currentValue, index, array), thisValue)`
          
          |  |  |  |
          | --- | --- | --- |
          | **參數**  | **必需/可選**  | **描述**  |
          | Function  | 必需 | 用于對數組每個元素運行的函數 |
          | currentvalue | 必需 | 當前元素的值 |
          | index | 可選 | 當前元素的索引 |
          | Array | 可選 | 當前元素的數組 |
          | Thisvalue | 可選 | 作為this值傳遞給函數的值。默認為undefined。 |
          
          ### 示例
          
          ```json
          var obj = [ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
          obj.forEach((item, index, arr) => {
                 console.log("元素詳情:     " +index);
                 console.log("姓名:      "+arr[index]["name"]);
                 console.log("年齡:      "+item.age);
          });

          輸出

          元素詳情:  0
          姓名:      Natalie
          年齡:      21
          元素詳情:  1
          姓名:      David
          年齡:      37
          元素詳情:  2
          姓名:      Mark
          年齡:      43

          結論

          JSON通常用于在服務器和Web應用程序之間傳輸數據。JSON的靈活性、易解析性和簡單性使軟件開發人員能夠在各種編程環境中高效地處理結構化數據。


          主站蜘蛛池模板: 波多野结衣中文一区| 欧美成人aaa片一区国产精品| 国产一区二区三区播放心情潘金莲| 四虎一区二区成人免费影院网址| 久久国产视频一区| 亚洲国产成人久久一区久久| 成人精品一区二区三区校园激情| 久久精品一区二区三区资源网| 好爽毛片一区二区三区四| 综合激情区视频一区视频二区| 国产一区二区久久久| 精品不卡一区二区| 亚洲国产视频一区| 97se色综合一区二区二区| 日韩精品一区二区三区色欲AV| 亚洲色精品vr一区二区三区| 亚洲av日韩综合一区二区三区| 中文字幕精品一区二区三区视频| 精品久久一区二区三区| 激情内射亚州一区二区三区爱妻| 高清无码一区二区在线观看吞精| 国产伦精品一区二区三区视频小说| 手机福利视频一区二区| 天堂一区人妻无码| 精品国产日韩一区三区| 高清无码一区二区在线观看吞精| 精品一区二区三区在线播放| 一区二区在线视频免费观看| 国产一区二区四区在线观看| 国产亚洲情侣一区二区无| 中文字幕一区二区三区乱码| 久久亚洲综合色一区二区三区| 鲁丝片一区二区三区免费| 一区二区三区四区免费视频| 国产AV一区二区三区传媒| 蜜臀AV在线播放一区二区三区| 亚洲av乱码一区二区三区 | 丰满人妻一区二区三区视频53| 久久一区二区三区免费| 久久久久久免费一区二区三区| 91成人爽a毛片一区二区|