JSON.parse():从json字符串中解析出json对象(反序列化)。
JSON.stringify():用来序列化对象,无论参数是什么类型,输出的内容都是字符串类型。
例如有字符串:
var str = '{"name":"chengjunyu", "age":28, "sex":"male"}';
console.log(str);
console.log(typeof(str));
var jsonStr = JSON.stringify(str);
console.log(jsonStr);
console.log(typeof(jsonStr));
var json = JSON.parse(str);
console.log(json);
console.log(typeof(json));
var jsonstr2 = JSON.stringify(json);
console.log(jsonstr2);
console.log(typeof(jsonstr2));
由上述案例可以发现,{"name":"chengjunyu", "age":28, "sex":"male"}原来是一个字符串,经过JSON.stringify()解析后,将字符串做了一个转化,仍然是一个字符串,再将{"name":"chengjunyu", "age":28, "sex":"male"}字符串通过JSON.parse()解析,得到了一个Object对象,这时就是json对象了,我们可以直接通过json的key来获取value值,最后再将json通过JSON.stringify()解析,又一次得到了一个String类型的字符串。
上述案例中有个需要注意的地方,'{"name":"chengjunyu", "age":28, "sex":"male"}' 字符串中的key如果不加没有双引号,浏览器会报“Uncaught SyntaxError: Unexpected token n in JSON at position 1”错误,这是要按照json对象标准写法来写,所有的key都要加上双引号。