首先來看,jquery裏自帶的,和json相關的函數:
1.$.parseJSON : 用來解析JSON字符串,返回一個對象。
什麼叫「JSON字符串」?
好比:
var a={name:"aijquery",url:"www.aijquery.cn"};
上面定義的變量a是個JSON對象,咱們能夠直接用「a.name」或「a.url」來訪問內容的數據。
var a="{name:'aijquery',url:'www.aijquery.cn'}";
上面定義的變量a就是一個符合JSON數據結構的字符串,能夠叫作「JSON字符串」.
PS:關於$.parseJSON的用法,能夠參考站長之前寫的這篇文章:
jquery裏把字符串轉爲json對象的四種方法,及每種方法的優缺點
2. serializeArray() : 序列化表格元素 ,返回JSON數據結構數據。
雖然函數裏有個"Array",但和本篇咱們要說的「數組轉JSON」無關,serializeArray()這個函數是用來獲取表單數據的,和serialize()不一樣,serializeArray()返回的是JSON格式的數據。
由於jquery就是在JS的基礎上而來的,因此一些JS裏的函數,咱們在jquery裏也是能直接用的,下面來看看JS裏和JSON相關的兩個函數:
JSON.parse(text) : 用於將一個 JSON 字符串轉換爲JSON對象。
JSON.stringify() : 用於將一個"值"轉換爲 JSON 字符串。
本章咱們要說的,把數組轉換成JSON,主要用到的就是 " JSON.stringify() ",和之前同樣,咱們直接經過實例來學習:
實例1:簡單的數組:
var data =["a","b","c"];
var d =JSON.stringify(data);
console.log(d); //["a","b","c"]
console.log($.type(d)); // string
下面是上面這段代碼的運行結果:
[jquery裏把數組轉換成json的方法[精心整理]_1]
從上面的代碼裏,咱們能夠看出,JSON.stringify() 確實是把數組轉換成了字符串,可是這個字符串並非「JSON字符串」,緣由就是,在JSON裏,數據都是「名字:值」這樣配對的形式的,但上面這個數組太過簡單,只是個一維數組,因此不能轉換成「JSON字符串」的。
實例2:二維數組:
01:第一種形式的二維數組:
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
運行結果以下:
[jquery裏把數組轉換成json的方法[精心整理]_2]
很明顯,這個結果也不是咱們想要的,由於轉換後的字符串,並非「JSON字符串」。
02:第二種形式的二維數組:
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
運行結果截圖以下:
[jquery裏把數組轉換成json的方法[精心整理]_3]
很明顯,這也不是咱們想要的結果。。。。。
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
看此次的運行結果:
[jquery裏把數組轉換成json的方法[精心整理]_4]
與咱們想要的結果更遠了,不過不要急,還有最後一種:
04:最後一種寫法,直接把數據定義成對象:
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
下面是截圖:
[jquery裏把數組轉換成json的方法[精心整理]_5]
摘自 愛jQuery:http://www.aijquery.cn/Html/jqueryjiqiao/179.htmlhtml