parse用于從一個(gè)字符串中解析出json對(duì)象
var str = '{"name":"huangxiaojian","age":"23"}'
結(jié)果: JSON.parse(str) Object age: "23"name: "huangxiaojian"proto: Object
注意:?jiǎn)我?hào)寫在{}外嘹履,每個(gè)屬性名都必須用雙引號(hào)腻扇,否則會(huì)拋出異常。
stringify()用于從一個(gè)對(duì)象解析出字符串砾嫉,如 var a = {a:1,b:2} 結(jié)果:
JSON.stringify(a)"{"a":1,"b":2}"語(yǔ)法:
JSON.stringify(value [, replacer] [, space]) value:是必須要的字段幼苛。就是你輸入的對(duì)象,比如數(shù)組啊焕刮,類啊等等舶沿。 replacer:這個(gè)是可選的舌剂。它又分為2種方式,一種是方法暑椰,第二種是數(shù)組霍转。 情況一:我們先說(shuō)數(shù)據(jù),通過(guò)我們后面的實(shí)驗(yàn)可以知道一汽,它是和第一個(gè)有關(guān)系的避消。一般來(lái)說(shuō),我們系列化后的結(jié)果是通過(guò)鍵值對(duì)來(lái)進(jìn)行表示的召夹。 比如說(shuō): name:"lan",age:25 這種形式岩喷。 所以,如果這種形式的話监憎,如果第二個(gè)的值在第一個(gè)存在纱意,那么的話就以第二個(gè)的值做key,第一個(gè)值為value進(jìn)行表示鲸阔,如果不存在偷霉,sorry,忽略褐筛±嗌伲【是不是有點(diǎn)抽象,我也這么覺(jué)得渔扎,不過(guò)你等一下看實(shí)驗(yàn) 就OK了硫狞。。呼呼晃痴〔蟹裕】 情況二:如果是方法,那很簡(jiǎn)單倘核,就是說(shuō)把系列化后的每一個(gè)對(duì)象(記住 是每一個(gè))傳進(jìn)方法里面進(jìn)行處理泣侮。 space:很好理解,用什么來(lái)做分隔符的笤虫。 1.如果省略的話旁瘫,那么顯示出來(lái)的值 就沒(méi)有分隔符祖凫。直接輸出來(lái) 2.如果是一個(gè)數(shù)字的話琼蚯,那么它就定義縮進(jìn)幾個(gè)字符,當(dāng)然 如果大于10 惠况,則最大值為10. 3.如果是一些轉(zhuǎn)義字符遭庶,比如“\t”,表示回車稠屠,那么它每行一個(gè)回車峦睡。 4.如果僅僅是字符串翎苫,OK,就在每行輸出值的時(shí)候把這些字符串附加上去就OK榨了。當(dāng)然煎谍,最大長(zhǎng)度也是10個(gè)字符。 123456var student = new Object();student.name = "Lanny";student.age = "25";student.location = "China";var json = JSON.stringify(student);alert(student); 第二個(gè)參數(shù)存在龙屉,并且第二個(gè)參數(shù)不是function呐粘,而是數(shù)組的時(shí)候。 1.如果第一個(gè)參數(shù)是數(shù)組转捕,第二個(gè)參數(shù)也是數(shù)組的話作岖,只顯示第一個(gè)參數(shù)的值。第二個(gè)被忽略了五芝,只是第一個(gè)被系列化了痘儡。 2.如果第一個(gè)是對(duì)象,第二個(gè)是數(shù)組的枢步。那么如果第二個(gè)的value在第一個(gè)存在沉删,那么的話就以第二個(gè)的值做key,第一個(gè)值為value進(jìn)行表示醉途。 123456789101112var student = new Object();student.qq = "5485891512";student.name = "Lanny";student.age = 25; var stu = new Array();stu[0] = "qq";stu[1] = "age";stu[2] = "Hi";//這個(gè)student對(duì)象里不存在丑念。 var json = JSON.stringify(student,stu);alert(json);