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