摘要:獨(dú)立于語言和平臺(tái),解析器和庫支持許多不同的編程語言。數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換為對(duì)象解析器函數(shù)創(chuàng)建包含語法的字符串使用解析器,解析文本并生成對(duì)象使用函數(shù)時(shí),必須為傳入的數(shù)據(jù)參數(shù)添加括號(hào),否則會(huì)報(bào)語法錯(cuò)誤。
區(qū)別
JSON(JavaScript Object Notation)僅僅是一種數(shù)據(jù)格式(或者叫數(shù)據(jù)形式)。數(shù)據(jù)格式其實(shí)就是一種規(guī)范,按照這種規(guī)范來存諸和交換數(shù)據(jù)。就好像 XML 格式一樣。
區(qū)別 | Json | Javascript對(duì)象 |
---|---|---|
含義 | 僅僅是一種數(shù)據(jù)格式 | 對(duì)象的實(shí)例 |
傳輸 | 可以跨平臺(tái)數(shù)據(jù)傳輸,速度快 | 不能傳輸 |
表現(xiàn) | 1. 鍵值對(duì) 2. 鍵必須加雙引號(hào) 3. 值不能為方法函數(shù)/undefined/NaN |
1.鍵值對(duì) 2.值可以是函數(shù)、對(duì)象、字符串、數(shù)字、boolean 等 |
相互轉(zhuǎn)換 | Json → JS 對(duì)象: 1. var obj = JSON.parse(jsonstring); 2. var obj = eval("("+jsonstring+")"); |
JS 對(duì)象 → Json: JSON.stringify(obj); |
JSON 文本格式在語法上與創(chuàng)建 JavaScript 對(duì)象的代碼相同,但本質(zhì)是不同的。我們不能把以下的對(duì)象叫 JSON,比如:
var obj1 = {}; // 這只是 JS 對(duì)象 // 可把這個(gè)稱做:JSON 格式的 JavaScript 對(duì)象 var obj2 = {"width":100,"height":200,"name":"rose"}; // 可把這個(gè)稱做:JSON 格式的字符串 var str1 = "{"width":100,"height":200,"name":"rose"}"; // 這個(gè)可叫 JSON 格式的數(shù)組,是 JSON 的稍復(fù)雜一點(diǎn)的形式 var arr = [ {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, ]; ???????? // 這個(gè)可叫稍復(fù)雜一點(diǎn)的 JSON 格式的字符串????? var str2="["+ "{"width":100,"height":200,"name":"rose"},"+ "{"width":100,"height":200,"name":"rose"},"+ "{"width":100,"height":200,"name":"rose"},"+ "]";
但 JSON 和 JavaScript 確實(shí)存在淵源,JSON 本身的意思就是 JavaScript 對(duì)象表示法(JavaScript Object Notation),可以說這種數(shù)據(jù)格式是從 JavaScript 對(duì)象中演變出來的。JSON 語法是 JavaScript 對(duì)象表示法語法的子集。
JSON 格式的數(shù)據(jù),主要是為了跨平臺(tái)交流數(shù)據(jù)用的。JSON 獨(dú)立于語言和平臺(tái),JSON 解析器和 JSON 庫支持許多不同的編程語言。
語法1、JSON 語法規(guī)則:
數(shù)據(jù)在名稱/值對(duì)中
數(shù)據(jù)由逗號(hào)分隔
花括號(hào)保存對(duì)象
方括號(hào)保存數(shù)組
2、JSON 數(shù)據(jù)值:
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
字符串(在雙引號(hào)中)
邏輯值(true 或 false)
數(shù)組(在方括號(hào)中)
對(duì)象(在花括號(hào)中)
null
JSON 數(shù)據(jù)結(jié)構(gòu)有兩種,這兩種結(jié)構(gòu)就是對(duì)象和數(shù)組,通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。
JSON 使用嚴(yán)格的 JavaScript 對(duì)象表示法來表示結(jié)構(gòu)化的數(shù)據(jù),因此 JSON 的屬性名必須有雙引號(hào)。
{ "company": "Apple", "age": 18, "IPO", true, "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }數(shù)據(jù)轉(zhuǎn)換 JSON 數(shù)據(jù)轉(zhuǎn)換為 JS 對(duì)象
1、JS 解析器:eval() 函數(shù)
// 創(chuàng)建包含 JSON 語法的 JavaScript 字符串 var txt = "{ "employees" : [" + "{ "firstName":"John" , "lastName":"Doe" }," + "{ "firstName":"Anna" , "lastName":"Smith" }," + "{ "firstName":"Peter" , "lastName":"Jones" } ]}"; //使用 JS 解析器,解析 JSON 文本并生成 JS 對(duì)象 var obj = eval("(" + txt + ")");
使用 eval() 函數(shù)時(shí),必須為傳入的 JSON 數(shù)據(jù)參數(shù)添加括號(hào)"()",否則會(huì)報(bào)語法錯(cuò)誤。
2、 解析器:parse()函數(shù)
但 eval() 的問題在于,除了可以解析 JSON 數(shù)據(jù),也可以用于執(zhí)行 JavaScript 腳本片段,這就會(huì)帶來潛在的安全問題。JSON 提供了專門的 JSON Parser 來實(shí)現(xiàn)只用于解析 JSON 數(shù)據(jù),不會(huì)執(zhí)行 JavaScript 腳本,而且速度更快。如下:
var obj = JSON.parse(txt);
較新的瀏覽器和最新的 ECMAScript (JavaScript) 標(biāo)準(zhǔn)中均包含了原生的對(duì) JSON 的支持。
JS 數(shù)據(jù)轉(zhuǎn)換為 JSON 文本使用 JSON.strigify() 函數(shù),將 Javascript 對(duì)象轉(zhuǎn)換為 JSON 文本數(shù)據(jù)。
var obj = {a:1,b:2} var?txt?=?JSON.stringify(obj); console.log(txt); 結(jié)果: "{"a":1,"b":2}"
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79988.html
摘要:,指的對(duì)象表示法,它本身是個(gè)字符串,是一種數(shù)據(jù)交換格式,并非對(duì)象。字符串必須使用雙引號(hào)表示,不能使用單引號(hào)。數(shù)組或?qū)ο笞詈笠粋€(gè)成員的后面,不能有逗號(hào)。不合法的會(huì)在解析成對(duì)象時(shí),出現(xiàn)錯(cuò)誤。替代方法對(duì)象下雖然提供了完整的字符串和對(duì)象的轉(zhuǎn)換方法。 JSON(JavaScript Object Notation),指JavaScript的對(duì)象表示法,它本身是個(gè)字符串,是一種數(shù)據(jù)交換格式,并非對(duì)...
摘要:對(duì)象對(duì)象作為一種復(fù)雜的數(shù)據(jù)類型,表示的是一組有序的鍵值對(duì)。解析與序列化對(duì)象流行的最主要的原因是因?yàn)閿?shù)據(jù)結(jié)構(gòu)可以解析為的對(duì)象。為了改變序列化對(duì)象的結(jié)果,函數(shù)返回值就是相應(yīng)鍵的值。否則按照默認(rèn)順序執(zhí)行序列化。 語法 JSON可以表示一下三種類型的值: 簡單值:使用與js相同的語法可以在json中表示字符串、數(shù)值、布爾值和null。但是json不支持js的undefined。 對(duì)象:對(duì)象作...
摘要:系列目錄復(fù)習(xí)資料資料整理個(gè)人整理重溫基礎(chǔ)篇重溫基礎(chǔ)對(duì)象介紹本章節(jié)復(fù)習(xí)的是中的關(guān)于對(duì)象相關(guān)知識(shí)。概念概念有三點(diǎn)全稱對(duì)象表示法。對(duì)象沒有分號(hào),而對(duì)象有。序列化對(duì)象時(shí),所有函數(shù)及原型成員都會(huì)被忽略,不體現(xiàn)在結(jié)果上。 本文是 重溫基礎(chǔ) 系列文章的第十六篇。今日感受:靜。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】1-14篇 【重溫基礎(chǔ)】15...
摘要:它將返回目標(biāo)對(duì)象。有些文章說是深拷貝,其實(shí)這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大??截惽昂髢蓚€(gè)對(duì)象互不影響。使用深拷貝的場景完全改變變量之后對(duì)沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數(shù)值或?qū)ο筚x給某個(gè)變量的過程,分為: 1、基本數(shù)據(jù)類型:賦值,賦值之后兩個(gè)變量互不影響 2、引用數(shù)據(jù)類型:賦址,兩個(gè)變量具有相同的引用,指向同一個(gè)對(duì)象,相互之間有...
摘要:面向?qū)ο缶幊虒?duì)象的原生方法分成兩類自身的方法靜態(tài)方法和的實(shí)例方法。的靜態(tài)方法方法與,參數(shù)是對(duì)象,返回一個(gè)數(shù)組,數(shù)組的值是改對(duì)象自身的所有屬性名區(qū)別在于返回可枚舉的屬性,返回不可枚舉的屬性值。 面向?qū)ο缶幊?Objects對(duì)象的原生方法分成兩類:Object自身的方法(靜態(tài)方法)和Object的實(shí)例方法。注意Object是JavaScript的原生對(duì)象,所有的其他對(duì)象都是繼承自O(shè)bjec...
閱讀 2938·2021-11-24 09:39
閱讀 3623·2021-11-22 13:54
閱讀 3425·2021-11-16 11:45
閱讀 2454·2021-09-09 09:33
閱讀 3211·2019-08-30 15:55
閱讀 1302·2019-08-29 15:40
閱讀 933·2019-08-29 15:19
閱讀 3412·2019-08-29 15:14