首先来看,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