在JavaScript中串行化為JSON—使用json2.js
JavaScript中沒有直接串行化對(duì)象的內(nèi)置方法,當(dāng)然你可以自己寫一個(gè),不過我還是強(qiáng)烈推薦你在這里偷個(gè)小懶,使用現(xiàn)成的組件,我們可以轉(zhuǎn)換和導(dǎo)出對(duì)象結(jié)構(gòu),還可以使用 json_encode() 使來自 PHP 數(shù)據(jù)庫連接的數(shù)據(jù)可用于 Ajax 應(yīng)用程序。
獲得完畢json2.js文件后,你可以打開這個(gè)文件,在文件的前部分包含了相當(dāng)大量的注釋信息,如果你的英文足夠好,那么你可以省略我這一節(jié),參考該文件的注釋就可以了,如果作為程序員,你已經(jīng)看夠了大片的字母。#t#
想看看我的漢字+字母,那你可以向下繼續(xù)了。該文件創(chuàng)建了一個(gè)包含兩個(gè)方法的全局對(duì)象JSON,它的方法分別是: 復(fù)制內(nèi)容到剪貼板
代碼:
- de>JSON.stringify(value, whitelist)de>
一個(gè)可選的數(shù)組參數(shù),用于判定對(duì)象值如何被串行化這個(gè)方法通過一個(gè)JavaScript值來生成JSON文本。在進(jìn)行串行化時(shí),根據(jù)可選的參數(shù)whitelist,有三種可能:
如果某個(gè)對(duì)象有toJSON方法,那么則調(diào)用該方法,toJSON方法的返回值將被串行化。
否則,如果可選參數(shù)whitelist是一個(gè)數(shù)組,那么數(shù)組中的元素將被用來選擇對(duì)象進(jìn)行串行化時(shí)的的成員。否則,如果沒有使用whitelist參數(shù),則對(duì)象的所有成員將被串行化。如果值沒有JSON的表現(xiàn)形式,例如undefined或者函數(shù),則其不會(huì)被串行化。
在對(duì)象中,這樣的值會(huì)被忽略,而在數(shù)組中將會(huì)被null替換。JSON.stringify(undefined)會(huì)返回undefined。日期將會(huì)被串行化為被引用的ISO日期。
代碼:
- de>var text = JSON.stringify(['e', {pluribus: 'unum'}]);
- //text is '["e",{"pluribus":"unum"}]'
- JSON.parse(text, filter)de>
代碼:
- de>//解析文本,如果某個(gè)鍵包含字符串“date”,則將其值轉(zhuǎn)換為日期
- myData = JSON.parse(text, function (key, value) {
- return key.indexOf('date') >= 0 ? new Date(value) : value;});de>