成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript:JSON 和 JS 對象

Miracle / 1031人閱讀

摘要:獨立于語言和平臺,解析器和庫支持許多不同的編程語言。數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換為對象解析器函數(shù)創(chuàng)建包含語法的字符串使用解析器,解析文本并生成對象使用函數(shù)時,必須為傳入的數(shù)據(jù)參數(shù)添加括號,否則會報語法錯誤。

區(qū)別

JSON(JavaScript Object Notation)僅僅是一種數(shù)據(jù)格式(或者叫數(shù)據(jù)形式)。數(shù)據(jù)格式其實就是一種規(guī)范,按照這種規(guī)范來存諸和交換數(shù)據(jù)。就好像 XML 格式一樣。

區(qū)別 Json Javascript對象
含義 僅僅是一種數(shù)據(jù)格式 對象的實例
傳輸 可以跨平臺數(shù)據(jù)傳輸,速度快 不能傳輸
表現(xiàn) 1. 鍵值對
2. 鍵必須加雙引號
3. 值不能為方法函數(shù)/undefined/NaN
1.鍵值對
2.值可以是函數(shù)、對象、字符串、數(shù)字、boolean 等
相互轉(zhuǎn)換 Json → JS 對象:
1. var obj = JSON.parse(jsonstring);
2. var obj = eval("("+jsonstring+")");
JS 對象 → Json:
JSON.stringify(obj);

JSON 文本格式在語法上與創(chuàng)建 JavaScript 對象的代碼相同,但本質(zhì)是不同的。我們不能把以下的對象叫 JSON,比如:

var obj1 = {}; // 這只是 JS 對象

// 可把這個稱做:JSON 格式的 JavaScript 對象 
var obj2 = {"width":100,"height":200,"name":"rose"};

// 可把這個稱做:JSON 格式的字符串
var str1 = "{"width":100,"height":200,"name":"rose"}";

// 這個可叫 JSON 格式的數(shù)組,是 JSON 的稍復(fù)雜一點的形式
var arr = [
    {"width":100,"height":200,"name":"rose"},
    {"width":100,"height":200,"name":"rose"},
    {"width":100,"height":200,"name":"rose"},
];
????????
// 這個可叫稍復(fù)雜一點的 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),可以說這種數(shù)據(jù)格式是從 JavaScript 對象中演變出來的。JSON 語法是 JavaScript 對象表示法語法的子集。

JSON 格式的數(shù)據(jù),主要是為了跨平臺交流數(shù)據(jù)用的。JSON 獨立于語言和平臺,JSON 解析器和 JSON 庫支持許多不同的編程語言。

語法

1、JSON 語法規(guī)則:

數(shù)據(jù)在名稱/值對中

數(shù)據(jù)由逗號分隔

花括號保存對象

方括號保存數(shù)組

2、JSON 數(shù)據(jù)值:

數(shù)字(整數(shù)或浮點數(shù))

字符串(在雙引號中)

邏輯值(true 或 false)

數(shù)組(在方括號中)

對象(在花括號中)

null

JSON 數(shù)據(jù)結(jié)構(gòu)有兩種,這兩種結(jié)構(gòu)就是對象和數(shù)組,通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。
JSON 使用嚴(yán)格的 JavaScript 對象表示法來表示結(jié)構(gòu)化的數(shù)據(jù),因此 JSON 的屬性名必須有雙引號

{
    "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 對象

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 對象
var obj = eval("(" + txt + ")");  

使用 eval() 函數(shù)時,必須為傳入的 JSON 數(shù)據(jù)參數(shù)添加括號"()",否則會報語法錯誤。

2、 解析器:parse()函數(shù)

但 eval() 的問題在于,除了可以解析 JSON 數(shù)據(jù),也可以用于執(zhí)行 JavaScript 腳本片段,這就會帶來潛在的安全問題。JSON 提供了專門的 JSON Parser 來實現(xiàn)只用于解析 JSON 數(shù)據(jù),不會執(zhí)行 JavaScript 腳本,而且速度更快。如下:

var obj = JSON.parse(txt);

較新的瀏覽器和最新的 ECMAScript (JavaScript) 標(biāo)準(zhǔn)中均包含了原生的對 JSON 的支持。

JS 數(shù)據(jù)轉(zhuǎn)換為 JSON 文本

使用 JSON.strigify() 函數(shù),將 Javascript 對象轉(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/79988.html

相關(guān)文章

  • JavaScript對象JSON

    摘要:,指的對象表示法,它本身是個字符串,是一種數(shù)據(jù)交換格式,并非對象。字符串必須使用雙引號表示,不能使用單引號。數(shù)組或?qū)ο笞詈笠粋€成員的后面,不能有逗號。不合法的會在解析成對象時,出現(xiàn)錯誤。替代方法對象下雖然提供了完整的字符串和對象的轉(zhuǎn)換方法。 JSON(JavaScript Object Notation),指JavaScript的對象表示法,它本身是個字符串,是一種數(shù)據(jù)交換格式,并非對...

    wuyumin 評論0 收藏0
  • JavaScript JSON——“語法、解析與序列化”的注意要點

    摘要:對象對象作為一種復(fù)雜的數(shù)據(jù)類型,表示的是一組有序的鍵值對。解析與序列化對象流行的最主要的原因是因為數(shù)據(jù)結(jié)構(gòu)可以解析為的對象。為了改變序列化對象的結(jié)果,函數(shù)返回值就是相應(yīng)鍵的值。否則按照默認(rèn)順序執(zhí)行序列化。 語法 JSON可以表示一下三種類型的值: 簡單值:使用與js相同的語法可以在json中表示字符串、數(shù)值、布爾值和null。但是json不支持js的undefined。 對象:對象作...

    ?。琛?/span> 評論0 收藏0
  • 【重溫基礎(chǔ)】16.JSON對象介紹

    摘要:系列目錄復(fù)習(xí)資料資料整理個人整理重溫基礎(chǔ)篇重溫基礎(chǔ)對象介紹本章節(jié)復(fù)習(xí)的是中的關(guān)于對象相關(guān)知識。概念概念有三點全稱對象表示法。對象沒有分號,而對象有。序列化對象時,所有函數(shù)及原型成員都會被忽略,不體現(xiàn)在結(jié)果上。 本文是 重溫基礎(chǔ) 系列文章的第十六篇。今日感受:靜。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎(chǔ)】1-14篇 【重溫基礎(chǔ)】15...

    0x584a 評論0 收藏0
  • JavaScript系列--淺析JavaScript解析賦值、淺拷貝深拷貝的區(qū)別

    摘要:它將返回目標(biāo)對象。有些文章說是深拷貝,其實這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大??截惽昂髢蓚€對象互不影響。使用深拷貝的場景完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數(shù)值或?qū)ο筚x給某個變量的過程,分為: 1、基本數(shù)據(jù)類型:賦值,賦值之后兩個變量互不影響 2、引用數(shù)據(jù)類型:賦址,兩個變量具有相同的引用,指向同一個對象,相互之間有...

    laznrbfe 評論0 收藏0
  • 前端_JavaScript_面向對象編程

    摘要:面向?qū)ο缶幊虒ο蟮脑椒ǚ殖蓛深愖陨淼姆椒o態(tài)方法和的實例方法。的靜態(tài)方法方法與,參數(shù)是對象,返回一個數(shù)組,數(shù)組的值是改對象自身的所有屬性名區(qū)別在于返回可枚舉的屬性,返回不可枚舉的屬性值。 面向?qū)ο缶幊?Objects對象的原生方法分成兩類:Object自身的方法(靜態(tài)方法)和Object的實例方法。注意Object是JavaScript的原生對象,所有的其他對象都是繼承自O(shè)bjec...

    Blackjun 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<