js数组、对象转json以及json转数组、对象
1、JS对象转JSON
⽅式:JSON.stringify(obj)
var json ={"name":"iphone","price":666};//创建对象;
var jsonStr =JSON.stringify(json);//转为JSON字符串
console.log(jsonStr);
2、JS数组转JSON
//数组转json串
var arr =[1,2,3,{ a :1}];
JSON.stringify( arr );
3、JS对象数组转JSON
/
/数组转json串
var arr =[1,2,3,{ a :1}];
JSON.stringify( arr );
4、JSON转JS数组
//json字符串转数组
var jsonStr ='[1,2,3,{"a":1}]';
var jsarr=JSON.parse( jsonStr );
alert(jsarr[0]);
5、JSON转JS对象
var jsonString ='{"bar":"property","baz":3}';
var jsObject =JSON.parse(jsonString);//转换为json对象
alert(jsObject.bar);//取json中的值
JS中的数组转变成JSON格式字符串的⽅法
有⼀个JS数组,如:
var arr =[["projectname1","projectnumber1"],["projectname2","projectnumber2"],["projectname3","projectnumber3"]];
想将此数组转换成JSON字符串,如:
var jsonarr =[{"projectname":projectname1,"projectnumber":projectnumber1},{"projectname":projectname2,"projectnumber":projectnumber2},{"projectnam e":projectname3,"projectnumber":projectnumber3}];
⽅法如下:
function tojson(arr){
if(!arr.length)return null;
var i =0;
len = arr.length,
array =[];
for(;i<len;i++){
array.push({"projectname":arr[i][0],"projectnumber":arr[i][1]});
}
return JSON.stringify(array);
}
Js 数组转JSON格式
var arrays=new Array();
//JSON.stringify() 不能转下标⾮1,2,3这种数字的数组,
/
/所以采⽤新建对象的⽅式添加数据
var products={};
products['productid']='32';
products['name']='⼿机';
arrays.push(products);
products['productid']='33';
products['name']='电脑';
arrays.push(products);
var json_arrays =JSON.stringify(arrays);
console.log(json_arrays);
jquery⾥把数组转换成json的相关⽅法。
⾸先来看,jquery⾥⾃带的,和json相关的函数:
1.$.parseJSON : ⽤来解析JSON字符串,返回⼀个对象。
什么叫“JSON字符串”?
⽐如:
var a={name:"aijquery",url:"www.aijquery"};
上⾯定义的变量a是个JSON对象,我们可以直接⽤“a.name”或“a.url”来访问内容的数据。
var a="{name:'aijquery',url:'www.aijquery'}";
上⾯定义的变量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对象。
js 二维数组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
下⾯是上⾯这段代码的运⾏结果:
从上⾯的代码⾥,我们可以看出,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
运⾏结果如下:
很明显,这个结果也不是我们想要的,因为转换后的字符串,并不是“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
运⾏结果截图如下:
很明显,这也不是我们想要的结果。。。。。
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
看这次的运⾏结果:
与我们想要的结果更远了,不过不要急,还有最后⼀种:
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
下⾯是截图:
这下就是我们想要的结果了,从上⾯的截图就可以看出,最后转换成的结果完全就是“JSON字符串”。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论