JavaScript中的對(duì)象與JSON
簡(jiǎn)介
JSON即JavaScript Object Natation,它是一種輕量級(jí)的數(shù)據(jù)交換格式,非常適合于服務(wù)器與 JavaScript 的交互。
JSON是一種數(shù)據(jù)交換格式,像XML和YAML一樣是一種在各種不同語(yǔ)言間傳遞結(jié)構(gòu)化信息的方式。從另一方面來(lái)說(shuō),javascript對(duì)象是javascript語(yǔ)言中的一種數(shù)據(jù)類型,就像PHP中的數(shù)組、C++中類和結(jié)構(gòu)體。
定義JSON與javascript對(duì)象
在javascript程序中定義對(duì)象的時(shí)候,對(duì)象的屬性名可以加雙引號(hào)也可以不加雙引號(hào)。如果屬性名包含特殊字符(如!、if等)的時(shí)候,就必須加雙引號(hào)。
在定義JSON的時(shí)候,屬性名必須加雙引號(hào)。
代碼示例:
1.定義javascript對(duì)象
var obj={name:"tudouya","sex":"man"}; #兩個(gè)屬性可以加雙引號(hào)也可以不加
var obj={"!":"hello world"}; #屬性名包含特殊字符時(shí)必須加雙引號(hào)
2.定義JSON字符串
var jsonString={"name":"tudouya"}; #定義JSON時(shí)必須加雙引號(hào)
javascript對(duì)象轉(zhuǎn)換為JSON
1.javascript對(duì)象轉(zhuǎn)換為JSON
我們可以使用javascript的內(nèi)置函數(shù)將javascript對(duì)象轉(zhuǎn)換為JSON,這個(gè)函數(shù)就是JSON.stringify().
代碼示例:
var obj={name:"tudouya",sex:"man"};
var jsonObj=JSON.stringify(obj);
console.log(jsonObj);
##輸出結(jié)果為:{"name":"tudouya","sex":"man"}
在將javascript對(duì)象轉(zhuǎn)換為JSON的時(shí)候,有一點(diǎn)是需要我們注意的:
如果對(duì)象中包含有值為函數(shù)和日期的屬性,JSON會(huì)忽略值為函數(shù)的屬性,并將值為日期的屬性轉(zhuǎn)換為字符串。
代碼示例:
var obj={
name:"tudouya",
birthday:new Date(),
action:function (){
document.write("walk");
}
};
var jsonObj=JSON.stringify(obj);
console.log(jsonObj);
##輸出結(jié)果為:{"name":"tudouya","birthday":"2014-08-12T10:05:00.497Z"}
javascript中解析JSON
在老版本的JS中,大家通常都使用eval()函數(shù)來(lái)解析JSON,但是ECMAScript5給我們提供了一個(gè)解析JSON的新函數(shù)JSON.parse()。
這個(gè)函數(shù)的使用方法比較簡(jiǎn)單,大家可以自行嘗試。當(dāng)對(duì)某個(gè)JSON字符串應(yīng)用該函數(shù)以后,該JSON就被轉(zhuǎn)換為javascript的對(duì)象,也就是說(shuō)當(dāng)用typeof運(yùn)算符查看該函數(shù)的類型時(shí),返回的值是Object。
同樣有一點(diǎn)需要注意的是,該函數(shù)是ECMAScript5以后才支持的,如果是舊版本的瀏覽器那么可能不支持該函數(shù)。解決的方法是加載一個(gè)實(shí)現(xiàn)該函數(shù)的js文件,即json2.js。如果使用的是JQuery框架,jQuery.parseJSON(),該函數(shù)調(diào)用了JSON.parse()方法。
關(guān)于使用eval()方法解析JSON,這個(gè)等深入學(xué)習(xí)后會(huì)記錄下來(lái)。
一個(gè)很重要的概念
作為一個(gè)前端菜鳥,經(jīng)常聽到別人說(shuō)“JSON對(duì)象”,但是其實(shí)并沒有“JSON對(duì)象”這個(gè)概念,JSON真正的表現(xiàn)形式是字符串。
- JavaScript獲得指定對(duì)象大小的方法
- JavaScript對(duì)象屬性檢查、增加、刪除、訪問操作實(shí)例
- javascript中JSON對(duì)象與JSON字符串相互轉(zhuǎn)換實(shí)例
- javascript實(shí)現(xiàn)類似java中g(shù)etClass()得到對(duì)象類名的方法
- JavaScript數(shù)組對(duì)象賦值用法實(shí)例
- JavaScript的面向?qū)ο缶幊袒A(chǔ)
- javascript中html字符串轉(zhuǎn)化為jquery dom對(duì)象的方法
- JavaScript對(duì)象學(xué)習(xí)小結(jié)
- 淺談Javascript中Object與Function對(duì)象
- 詳解JavaScript對(duì)Date對(duì)象的操作問題(生成一個(gè)倒數(shù)7天的數(shù)組)
- 深入學(xué)習(xí)JavaScript對(duì)象
相關(guān)文章
詳解JavaScript函數(shù)callee、call、apply的區(qū)別
這篇文章主要介紹了JavaScript函數(shù)callee、call、apply的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03