JavaScript中JSON和对象之间的转换规则
1.对象转JSON
使用 JSON.stringify() 方法
原始数据是对象且符合对象的规则。不符合对象的规则,就会报错。
var obj = {
name:"admin",
age:18,
sex:"男",
show:function(){},
a:undefined,
b:NaN,
c:null,
}
var str = JSON.stringify(obj);
console.log(str);//{"name":"admin","age":18,"sex":"男","b":null,"c":null}
console.log(typeof str);//string
因为json不识别函数,undefined和NaN,所以在强行转换之后,函数和undefined会被忽略,而NaN被转成null
2.JSON转对象
使用 JSON.parse() 方法
如果原始数据是JSON且符合JSON的规则,那么结果数据是对象,这个对象默认符合对象的规则。
JSON的规则如下:
1.必须是字符
var str = `{"name":"admin","age":18}`; //符合规则
var str = {"name":"admin","age":18}; //报错
var o = JSON.parse(str);
console.log(o);
2.基础格式参考js中的对象(array和object)
var str = '["hello",123,true]'; //符合规则
var str = `{"name":"admin","age":18}`; //符合规则
var str = "name":"admin","age":18; //报错
var o = JSON.parse(str);
console.log(o);
3.对象格式的key部分必须放在双引号中,单引号都不行
var str = `{"name":"admin","age":18}`; //符合规则
var str = "{`name:`admin`,`age`:18}"; //报错
var o = JSON.parse(str);
console.log(o);
4.不允许出现没有意义的逗号
var str = '{"name":"admin"}'; //符合规则
var str = '{"name":"admin",}'; //报错
var o = JSON.parse(str);
console.log(o);
5.不允许出现 函数,undefined和NaN,但可以出现null
var str = '{"name":"admin","show":null}'; //符合规则
var str = '{"name":"admin","show":undefined}'; //报错
var str = '{"name":"admin","show":function(){}'; //报错
var str = '{"name":"admin","show":NaN}'; //报错
var o = JSON.parse(str);
console.log(o);
6.不允许出现单引号
var json = '["hello",123,true]'; //符合规则
var json = "['hello',123,true]"; //报错
var o = JSON.parse(str);
console.log(o);
扩展名为:.json的文件专门用来表示json,在json文件中输入的所有内容,默认就是字符 所以,在json文件中只需要严格符合第2,3,4,5,6点规则即可