JS基础——JSON
- JS中的对象只有JS自己认识,其他的语言不认识
- JSON就是一个特殊格式的字符串,可以被任意语言识别
- 并且可以转换为任意语言中的对象
- JSON在开发中主要用来数据交互
JSON
- JavaScript Object Notation (JS对象表示法)
- JSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号
JSON分类:
-
对象 {}
var obj = ‘{“name”: “张三”, “age”: 10, “gender”: “男”}’;
var obj2 = ‘{“arr” : [1, 2, 3]}’;
-
数组 []
var arr = ‘[1, 2, 3, “hello”, true]’;
var arr2 = ‘[ {“name”: “张三”, “age”: 10, “gender”: “男”}, {“name”: “张三”, “age”: 10, “gender”: “男”}]’;
JSON中允许的值:
- 字符串
- 数值
- 布尔值
- null
- 对象(普通对象)
- 数组
JSON转JS对象
-
在JS中,为我们提供了一个工具类,就叫JSON
console.log(JSON);
-
JSON.parse()
-
它需要一个JSON字符串作为参数,将它转换为JS对象
var json = '{"name": "张三", "age": 10, "gender": "男"}';
var o = JSON.parse(json);
console.log(o);
JS对象转JSON
- JSON.stringify()
- 需要一个js对象作为参数,返回一个JSON字符串
var obj3 = {"name": "张三", "age": 10, "gender": "男"};
var str = JSON.stringify(obj3);
console.log(str);
JSON对象在IE7及以下不支持,所以在这些浏览器中调用时报错。
-
eval()
这个函数可以用来执行一段字符串形式的JS代码,并将执行结果返回
var str2 = "alert('hello');";
eval(str2);
如果使用eval()执行的字符串中含有{},它会将{}当成代码块,如果不希望将其当成代码块解析,需要在字符串前后各加一个()
var str3 = '{"name": "张三", "age": 10, "gender": "男"}'
var e = eval("(" + str3 + ")");
console.log(e);
- eval()这个函数的功能很强大,可以直接执行一个字符串中的js代码,
- 但是在开发中尽量不要使用,开发性能比较差,它还具有安全隐患(别有用心的人恶意传参)
如果要兼容IE7及以下的JSON操作,可以通过引入一个外部js文件—— json2.js 来处理。