首页 > 代码库 > json对象与字符串的相互转换,数组和字符串的转换

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 = http://www.mamicode.com/[
{ 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"]

json对象与字符串的相互转换,数组和字符串的转换