json对象与字符串的相互转换,数组和字符串的转换
1.json对象转换为字符串
JSON.stringify(value [, replacer] [, space])
var student = new Object();
student.id = "001";
student.name = "程陈";
student.age = "18";
var str = JSON.stringify(student);
//{"id":"001","name":"程陈","age":"18"}
var str1 = JSON.stringify(student,["id"],"ok");
//{
//ok"id": "001"
//}
var data = [
{ name: "小红", sex: 1, age: 10 },
{ name: "小明", sex: 0, age: 10 },
{ name: "小华", sex: 1, age: 30 }
];
var str_json = JSON.stringify(data, function (k, v) {
if (k === "sex") {
return ["女", "男"][v];
}
return v;
});
//[{"name":"小红","sex":"男","age":10},{"name":"小明","sex":"女","age":10},{"name":"小华","sex":"男","age":30}]
replacer : 使用来过滤的,可以出来数组和函数
情况一:replacer为数组时,通过后面的实验可以知道,它是和第一个参数value有关系的。一般来说,系列化后的结果是通过键值对来进行表示的。 所以,如果此时第二个参数的值在第一个存在,那么就以第二个参数的值做key,第一个参数的值为value进行表示,如果不存在,就忽略。
情况二:replacer为方法时,那很简单,就是说把系列化后的每一个对象(记住是每一个)传进方法里面进行处理。
space:就是用什么来做分隔符的。
1)如果省略的话,那么显示出来的值就没有分隔符,直接输出来 。
2)如果是一个数字的话,那么它就定义缩进几个字符,当然如果大于10 ,则默认为10,因为最大值为10。
3)如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。
4)如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去。当然,最大长度也是10个字符。
2.字符串转换为json 对象
var str2 = '{"abc":"123","bcd":"234"}';//每个属性都要用双引号括起来;不然会有异常
var obj = JSON.parse(str2);
//Object {abc: "123", bcd: "234"}
3.数组转换为字符串
var arr = ["aaa","bbb","ccc","ddd"];
var str4 = arr.join(",");
//aaa,bbb,ccc,ddd
4.字符串转换为数组
var str5 = "123,234,345,456";
var arr1 = str5.split(",");
console.log(arr1);
//["123", "234", "345", "456"]