首先來看侥涵,jquery里自帶的,和json相關(guān)的函數(shù):
1.$.parseJSON? :? 用來解析JSON字符串渔隶,返回一個(gè)對象寸认。
什么叫“JSON字符串”?
比如:
var a={name:"aijquery",url:"www.aijquery.cn"};
上面定義的變量a是個(gè)JSON對象,我們可以直接用“a.name”或“a.url”來訪問內(nèi)容的數(shù)據(jù)敬鬓。
var a="{name:'aijquery',url:'www.aijquery.cn'}";
上面定義的變量a就是一個(gè)符合JSON數(shù)據(jù)結(jié)構(gòu)的字符串淹朋,可以叫做“JSON字符串”.
PS:關(guān)于$.parseJSON的用法,可以參考站長以前寫的這篇文章:
jquery里把字符串轉(zhuǎn)為json對象的四種方法钉答,及每種方法的優(yōu)缺點(diǎn)
2. serializeArray()? : 序列化表格元素 ,返回JSON數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)础芍。
雖然函數(shù)里有個(gè)"Array",但和本篇我們要說的“數(shù)組轉(zhuǎn)JSON”無關(guān)数尿,serializeArray()這個(gè)函數(shù)是用來獲取表單數(shù)據(jù)的仑性,和serialize()不同,serializeArray()返回的是JSON格式的數(shù)據(jù)右蹦。
因?yàn)閖query就是在JS的基礎(chǔ)上而來的诊杆,所以一些JS里的函數(shù),我們在jquery里也是能直接用的何陆,下面來看看JS里和JSON相關(guān)的兩個(gè)函數(shù):
JSON.parse(text)? : 用于將一個(gè) JSON 字符串轉(zhuǎn)換為JSON對象刽辙。
JSON.stringify() : 用于將一個(gè)"值"轉(zhuǎn)換為 JSON 字符串。
本章我們要說的甲献,把數(shù)組轉(zhuǎn)換成JSON宰缤,主要用到的就是 " JSON.stringify()? ",和以前一樣晃洒,我們直接通過實(shí)例來學(xué)習(xí):
實(shí)例1:簡單的數(shù)組:
var data =["a","b","c"];
var d =JSON.stringify(data);
console.log(d);???????????? //["a","b","c"]
console.log($.type(d));???? // string
下面是上面這段代碼的運(yùn)行結(jié)果:
[jquery里把數(shù)組轉(zhuǎn)換成json的方法[精心整理]_1]
從上面的代碼里慨灭,我們可以看出,JSON.stringify() 確實(shí)是把數(shù)組轉(zhuǎn)換成了字符串球及,但是這個(gè)字符串并不是“JSON字符串”氧骤,原因就是,在JSON里吃引,數(shù)據(jù)都是“名字:值”這樣配對的形式的筹陵,但上面這個(gè)數(shù)組太過簡單,只是個(gè)一維數(shù)組镊尺,所以不能轉(zhuǎn)換成“JSON字符串”的朦佩。
實(shí)例2:二維數(shù)組:
01:第一種形式的二維數(shù)組:
var data =[["a","aa"],["b","bb"],["c","cc"]];
var d =JSON.stringify(data);
console.log(d);??????????? //[["a","aa"],["b","bb"],["c","cc"]]
console.log($.type(d));??? //string
運(yùn)行結(jié)果如下:
[jquery里把數(shù)組轉(zhuǎn)換成json的方法[精心整理]_2]
很明顯,這個(gè)結(jié)果也不是我們想要的庐氮,因?yàn)檗D(zhuǎn)換后的字符串语稠,并不是“JSON字符串”。
02:第二種形式的二維數(shù)組:
var data =new Array();
data[0]=new Array();
data[0][0]="a";
data[0][1]="aa";
data[1]=new Array();
data[1][0]="b";
data[1][1]="bb";
var d =JSON.stringify(data);
console.log(d);??????????? //[["a","aa"],["b","bb"]]
console.log($.type(d));??? //string
運(yùn)行結(jié)果截圖如下:
[jquery里把數(shù)組轉(zhuǎn)換成json的方法[精心整理]_3]
很明顯,這也不是我們想要的結(jié)果仙畦。输涕。。慨畸。莱坎。
03:再換一種寫法:
var data =new Array();
data[0]=new Array();
data[0]["name"]="a";
data[0]["val"]="aa";
data[1]=new Array();
data[1]["name"]="b";
data[1]["val"]="bb";
var d =JSON.stringify(data);
console.log(d);??????????????? //[[],[]]
console.log($.type(d));??????? //string
看這次的運(yùn)行結(jié)果:
[jquery里把數(shù)組轉(zhuǎn)換成json的方法[精心整理]_4]
與我們想要的結(jié)果更遠(yuǎn)了,不過不要急寸士,還有最后一種:
04:最后一種寫法型奥,直接把數(shù)據(jù)定義成對象:
var data ={};
data[0]={};
data[0]["name"]="a";
data[0]["val"]="aa";
data[1]={};
data[1]["name"]="b";
data[1]["val"]="bb";
var d =JSON.stringify(data);
console.log(d);??????????????? //{"0":{"name":"a","val":"aa"},"1":{"name":"b","val":"bb"}}
console.log($.type(d));??????? //string