整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          JavaScript中如何正確處理JSON

          JavaScript中如何正確處理JSON

          SON對(duì)象是什么?

          JSON代表JavaScript對(duì)象表示法,是一種基于JavaScript對(duì)象語(yǔ)法的結(jié)構(gòu)化數(shù)據(jù)的標(biāo)準(zhǔn)文本格式。JSON僅定義了兩種數(shù)據(jù)結(jié)構(gòu):對(duì)象和數(shù)組。JSON對(duì)象是由花括號(hào)括起來(lái)的鍵/值對(duì)組成的數(shù)據(jù)類(lèi)型。JSON數(shù)組是值的列表。當(dāng)數(shù)據(jù)從服務(wù)器發(fā)送到網(wǎng)頁(yè)或數(shù)據(jù)存儲(chǔ)在文件或數(shù)據(jù)庫(kù)中時(shí),通常會(huì)使用JSON對(duì)象。JSON與JavaScript對(duì)象文字語(yǔ)法非常相似,但可以獨(dú)立于JavaScript使用。許多編程環(huán)境支持讀取和生成JSON。

          JSON對(duì)象的特點(diǎn)

          • 它們以逗號(hào)分隔的鍵/值對(duì)形式編寫(xiě)。鍵是用雙引號(hào)括起來(lái)的字符串,值必須是以下JSON數(shù)據(jù)類(lèi)型字符串?dāng)?shù)字對(duì)象數(shù)組布爾值空值
          • 它們由花括號(hào){}括起來(lái)。花括號(hào)也可以用于在對(duì)象內(nèi)部嵌套對(duì)象,從而創(chuàng)建分層結(jié)構(gòu)。
          • 數(shù)組用方括號(hào)[]括起來(lái),它們的值用逗號(hào)(,)分隔。數(shù)組中的每個(gè)值可以是不同類(lèi)型,包括另一個(gè)數(shù)組或?qū)ο蟆?/span>
          • 它們區(qū)分大小寫(xiě),這意味著鍵和值在拼寫(xiě)和大小寫(xiě)上必須完全匹配。
          • 它們不允許尾隨逗號(hào)。簡(jiǎn)單來(lái)說(shuō),花括號(hào)外部或雙引號(hào)內(nèi)部不應(yīng)有任何不屬于鍵/值對(duì)的文本。
          • 它們不允許注釋。

          JSON提供了幾個(gè)優(yōu)點(diǎn),使其成為表示結(jié)構(gòu)化數(shù)據(jù)的流行選擇:

          • 簡(jiǎn)單易讀:JSON簡(jiǎn)單直觀(guān),易于理解。與XML等更冗長(zhǎng)的格式不同,JSON相對(duì)容易閱讀。其簡(jiǎn)潔的語(yǔ)法允許高效的數(shù)據(jù)表示。
          • 解析簡(jiǎn)便:JSON比XML更簡(jiǎn)單、更快速。
          • 靈活性:JSON支持各種數(shù)據(jù)類(lèi)型和對(duì)象層次結(jié)構(gòu),并且關(guān)系可以在傳輸過(guò)程中保持并在接收端適當(dāng)?shù)刂匦陆M裝。
          • 廣泛應(yīng)用:大多數(shù)現(xiàn)代API接受JSON請(qǐng)求并發(fā)出JSON響應(yīng),使其成為系統(tǒng)之間數(shù)據(jù)交換的通用格式。

          JSON對(duì)象示例


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

          嵌套JSON對(duì)象:這是一種由名稱(chēng)/值對(duì)列表組成的數(shù)據(jù)類(lèi)型,其中一個(gè)或多個(gè)值是另一個(gè)JSON對(duì)象。{"person": {"name": "Natalie", "age": 21}, "address": {"street": "123 XYZ Street", "City": "New York", "State" : "NY", "zip": "10001"}}

          JSON對(duì)象數(shù)組:[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]

          解析JSON對(duì)象

          解析是將JSON對(duì)象轉(zhuǎn)換為本機(jī)JavaScript對(duì)象的方法。

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

          語(yǔ)法:JSON.parse(string, function)

          參數(shù)

          必需/可選

          描述

          字符串

          必需

          以JSON格式編寫(xiě)的字符串

          Reviver函數(shù)

          可選

          一個(gè)接受鍵和值作為參數(shù)并返回修改后的值或undefined以刪除屬性的函數(shù)。對(duì)每個(gè)項(xiàng)目調(diào)用該函數(shù)。任何嵌套對(duì)象在父對(duì)象之前轉(zhuǎn)換。

          示例

          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對(duì)象轉(zhuǎn)換為字符串。在將數(shù)據(jù)發(fā)送到Web服務(wù)器時(shí),數(shù)據(jù)必須是字符串。JSON.stringify()也適用于數(shù)組。

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

          參數(shù)

          必需/可選

          描述

          Obj

          必需

          要轉(zhuǎn)換為字符串的值

          Replacer

          可選

          用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。對(duì)每個(gè)項(xiàng)目調(diào)用replacer。

          Space

          可選

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

          示例

          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}

          /*為每個(gè)空格插入單詞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對(duì)象導(dǎo)航

          可以使用點(diǎn)(.)或方括號(hào)([])表示法導(dǎo)航到其屬性并訪(fǎng)問(wèn)它們的值。

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

          Object.keys()方法

          keys()方法返回給定對(duì)象的自身可枚舉字符串鍵屬性的數(shù)組。作為靜態(tài)方法的keys()方法使用Object類(lèi)名調(diào)用。

          語(yǔ)法:Object.keys(obj)

          參數(shù)

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對(duì)象

          Object.values()方法

          values()方法返回給定對(duì)象的自身可枚舉字符串鍵屬性值的數(shù)組。作為靜態(tài)方法的values()方法使用Object類(lèi)名調(diào)用。

          語(yǔ)法:Object.values(obj)

          參數(shù)

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對(duì)象

          Object.entries()方法

          該方法返回對(duì)象的可枚舉屬性的鍵值對(duì)數(shù)組。作為靜態(tài)方法的entries()方法使用Object類(lèi)名調(diào)用。

          語(yǔ)法:Object.entries(obj)

          參數(shù)

          必需/可選

          描述

          obj

          必需

          要返回其可枚舉屬性的對(duì)象

          示例

          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循環(huán)

          for循環(huán)重復(fù)執(zhí)行,直到指定的條件評(píng)估為false。

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

          參數(shù)

          必需/可選

          描述

          初始化

          必需

          在執(zhí)行代碼塊之前執(zhí)行一次

          條件

          必需

          執(zhí)行代碼塊的條件

          表達(dá)式

          必需

          在執(zhí)行代碼塊后每次執(zhí)行

          示例

          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"]); //使用方括號(hào)表示法
                     console.log("Married Status:     " + obj[i].married); //使用點(diǎn)表示法
          }

          輸出

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

          for…in循環(huán)

          for...in語(yǔ)句遍歷對(duì)象的所有可枚舉字符串非符號(hào)屬性,包括繼承的可枚舉屬性。循環(huán)內(nèi)的代碼塊對(duì)每個(gè)屬性執(zhí)行一次。

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

          參數(shù)

          必需/可選

          描述

          item

          必需

          用于遍歷屬性的變量

          object

          必需

          要遍歷的對(duì)象

          示例

          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"]); //使用方括號(hào)表示法
                     console.log("Married Status:     " + obj[item].married); //使用點(diǎn)表示法
          }

          輸出

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

          for…of循環(huán)

          for..of循環(huán)按順序操作來(lái)自可迭代對(duì)象的值。

          語(yǔ)法:array.forEach(iterable object中的變量) {語(yǔ)句}

          參數(shù)

          必需/可選

          描述

          變量

          必需

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

          可迭代對(duì)象

          必需

          循環(huán)操作的值的來(lái)源。

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

          ## `forEach()`**方法** 
          
          `forEach()`方法對(duì)數(shù)組中的每個(gè)元素調(diào)用一個(gè)函數(shù)。它必須至少接受一個(gè)參數(shù),該參數(shù)表示數(shù)組的元素。
          
          *語(yǔ)法:*`array.forEach(function(currentValue, index, array), thisValue)`
          
          |  |  |  |
          | --- | --- | --- |
          | **參數(shù)**  | **必需/可選**  | **描述**  |
          | Function  | 必需 | 用于對(duì)數(shù)組每個(gè)元素運(yùn)行的函數(shù) |
          | currentvalue | 必需 | 當(dāng)前元素的值 |
          | index | 可選 | 當(dāng)前元素的索引 |
          | Array | 可選 | 當(dāng)前元素的數(shù)組 |
          | Thisvalue | 可選 | 作為this值傳遞給函數(shù)的值。默認(rèn)為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

          結(jié)論

          JSON通常用于服務(wù)器和Web應(yīng)用程序之間傳輸數(shù)據(jù)。JSON的靈活性、易解析性和簡(jiǎn)單性使軟件開(kāi)發(fā)人員能夠在各種編程環(huán)境中高效地處理結(jié)構(gòu)化數(shù)據(jù)。

          . 正則匹配ip地址

          <script type="text/javascript">
          /*匹配ip地址
          //192.35.61.137
          //第一段:1--223
          個(gè)位數(shù): 1-9 [1-9]
          十位數(shù): 10-99 [1-9]\d
          百位數(shù): 100-199 1\d\d
          二百位1:200-219 2[01]\d
          二百位2:220-223 22[0-3]
          var reg=/^([1-9]|[1-9]\d|1\d\d|2[01]\d|22[0-3])$/;
          //第二、三、四段:0--255
          個(gè)位數(shù): 0-9 \d
          十位數(shù): 10-99 [1-9]\d
          百位數(shù): 100-199 1\d\d
          二百位1: 200-249 2[0-4]\d
          二百位2: 250-255 25[0-5]
          var reg=/^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
          */
          var reg=/^([1-9]|[1-9]\d|1\d\d|2[01]\d|22[0-3])(\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}$/;
          var str="2.0.157.239";
          var rst=str.match(reg);
          document.write(rst);
          </script>

          2.正則匹配郵箱

          <script type="text/javascript">
          /*匹配郵箱
          tom@163.com
          mary_999@qq.com
          _linken123@sohu234.com
          2973293@qq.com
          xiaoming_555@163.com.cn
          Aobama@whitehouce.com
          規(guī)則:第一個(gè)內(nèi)容是 字母 或 數(shù)字 或 下劃線(xiàn)
          后邊跟許多字母、數(shù)字、下劃線(xiàn)
          中間有@符號(hào)
          后邊有域名為:字母或數(shù)字混合
          后綴:.字母字符串, 并且有多個(gè)
          */
          
          var reg=/^\w{6,10}@[a-z0-9]+(\.[a-z]+)+$/;
          var str="xiaoming";//null
          var str="297283992@163.com";//["297283992@163.com", ".com"]
          var str="_linken123@sohu234.com";//["_linken123@sohu234.com", ".com"]
          var str="Aobama@whitehouce.com";//["Aobama@whitehouce.com", ".com"]
          var rst=str.match(reg);
          document.write(rst);
          </script>

          3.校驗(yàn)注冊(cè)表單項(xiàng)目

          么是JavaScript

          JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)的、并具有安全性能的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶(hù)提供更流暢美觀(guān)的瀏覽效果。通常JavaScript腳本是通過(guò)嵌入在HTML中來(lái)實(shí)現(xiàn)自身的功能的。

          JavaScript特點(diǎn)

          是一種解釋性腳本語(yǔ)言(代碼不進(jìn)行預(yù)編譯)。

          主要用來(lái)向HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面添加交互行為。

          可以直接嵌入HTML頁(yè)面,但寫(xiě)成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離

          跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。

          JavaScript組成


          JavaScript日常用途

          1、嵌入動(dòng)態(tài)文本于HTML頁(yè)面。

          2、對(duì)瀏覽器事件做出響應(yīng)。

          3、讀寫(xiě)HTML元素

          4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。

          5、檢測(cè)訪(fǎng)客的瀏覽器信息。

          6、控制cookies,包括創(chuàng)建和修改等。

          7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。

          JavaScript的基本結(jié)構(gòu)

          <script type="text/javascript">
           <!—
           JavaScript 語(yǔ)句;
           —>
          </script >
          


          示例:

          ……
          <title>初學(xué)JavaScript</title>
          </head>
          <body>
          <script type="text/javascript">
           document.write("初學(xué)JavaScript");
           document.write("<h1>Hello,JavaScript</h1>");
          </script>
          </body>
          </html>
          


          <script>…</script>可以包含在文檔中的任何地方,只要保證這些代碼在被使用前已讀取并加載到內(nèi)存即可

          JavaScript的執(zhí)行原理


          網(wǎng)頁(yè)中引用JavaScript的方式

          1、使用<script>標(biāo)簽

          2、外部JS文件

          <script src="export.js" type="text/javascript"></script>
          


          3.直接在HTML標(biāo)簽中

          <input name="btn" type="button" value="彈出消息框" 
           onclick="javascript:alert('歡迎你');"/>
          


          JavaScript核心語(yǔ)法:


          1. 變量

          ①先聲明變量再賦值

          var width;
          width=5;
          var - 用于聲明變量的關(guān)鍵字
          width - 變量名
          


          ②同時(shí)聲明和賦值變量

          var catName="皮皮";
          var x, y, z=10;
          


          ③不聲明直接賦值【一般不使用】

          width=5;
          


          變量可以不經(jīng)聲明而直接使用,但這種方法很容易出錯(cuò),也很難查找排錯(cuò),不推薦使用。

          2. 數(shù)據(jù)類(lèi)型

          ①u(mài)ndefined:示例:var width;

          變量width沒(méi)有初始值,將被賦予值undefined

          ②null:表示一個(gè)空值,與undefined值相等

          ③number:

          var iNum=23; //整數(shù)

          var iNum=23.0; //浮點(diǎn)數(shù)

          ④Boolean:true和false 但是JS會(huì)把他們解析成1;0

          ⑤String:一組被引號(hào)(單引號(hào)或雙引號(hào))括起來(lái)的文本 var string1="This is a string";

          3. typeof運(yùn)算符

          typeof檢測(cè)變量的返回值;typeof運(yùn)算符返回值如下:

          ①u(mài)ndefined:變量被聲明后,但未被賦值.

          ②string:用單引號(hào)或雙引號(hào)來(lái)聲明的字符串。

          ③boolean:true或false。

          ④number:整數(shù)或浮點(diǎn)數(shù)。

          ⑤object:javascript中的對(duì)象、數(shù)組和null。


          主站蜘蛛池模板: 中文人妻无码一区二区三区| 国产乱人伦精品一区二区在线观看 | 精品一区二区三区波多野结衣 | 日本在线电影一区二区三区| 91久久精品午夜一区二区| 国模吧一区二区三区| 少妇精品久久久一区二区三区| AA区一区二区三无码精片| 久久se精品一区二区国产| 91在线视频一区| 国产综合精品一区二区三区| 亚洲av无码一区二区三区观看 | 国产亚洲综合一区柠檬导航 | 久久国产免费一区| 国产一区二区精品久久91| 国产一区二区三区播放| 在线日韩麻豆一区| 国产精品熟女视频一区二区| AV天堂午夜精品一区二区三区| 免费一区二区三区在线视频| 末成年女A∨片一区二区| 国产精品无码不卡一区二区三区| 国产视频一区在线播放| 韩国福利视频一区二区| 无码国产精品久久一区免费| 国内精品一区二区三区最新| 精品视频午夜一区二区| 日本一区视频在线播放| 久久久久女教师免费一区| 午夜精品一区二区三区在线视 | 日韩精品电影一区亚洲| 色精品一区二区三区| 无码国产精成人午夜视频一区二区 | 精品在线一区二区三区| 中文字幕一区二区三区在线播放| 福利一区福利二区| 日韩一区二区三区四区不卡| 自拍日韩亚洲一区在线| 玩弄放荡人妻一区二区三区| 波多野结衣中文一区| 国产欧美色一区二区三区|