JSON简介和语法
JOSN
-
JS中的对象只有js自己认识,其他语言都不认识,
-
JOSN 就是一个特殊格式的字符串,这个字符串可以被任意语言所识别,并且可以转换为任意语言的对象,josn在开发中主要用来数据的交互
-
JavaScript Object Notation (JSON):JavaScript对象表示法;
-
json和js对象的格式一样,只不过json字符串的属性名必须加双引号,其他的和js语法一致;
JSON 分类:
-
对象 {}
-
数组 []
var obj = {name : “孙悟空” , age : 18 , gender : “男”}
// obj是对象 ,属性名可加双引号也可以不加var obj = ’ {“name” : “孙悟空” , “age” : 18 , “gender” : “男”} ’
// obj 是json对象, 属性名必须加双引号,最外面用引号引起来;
JSON中允许的值:
- 字符串
- 数值.
- 布尔值
- null
- 对象
- 数组
var arr = ' [1,2,3,"hello","true"] '; // arr 是json数组, var obj2 = '{"arr" : [1,2,3]}' ; var arr2 = '[{name : "孙悟空" , age : 18 , gender : "男"} , {name : "孙悟空" , age : 18 , gender : "男"} ]' // 都是json
将json字符串转换为js对象
在JS中,为我们提供了一个工具类,就叫json,这个对象可以帮助我们将一个json转换为JS对象,也可以将一个js对象转换为json;
JSON -->JS对象
方法:JSON.parse();
可以将JSON字符串转换为JS对象
var json = ' {"name" : "孙悟空" , "age" : 18 , "gender" : "男"} '
var arr = ' [1,2,3,"hello","true"] ';
var o = JSON.parse(json);
var o2 = JSON.parse(arr);
console.log(o.name); // 孙悟空
console.log(o2); // [1, 2, 3, "hello", "true"]
console.log(o2[1]); // 2
JS对象 —> JSON
方法:JSON.stringify();
可以将JS对象转换为JSON字符串,
需要一个js对象作为参数,会返回一个json字符串,
var obj3 = {name:"猪八戒" , age:28 , gender:"男"};
var str = JSON.stringify(obj3);
console.log(typeof str); // string
console.log(str);
// {"name":"猪八戒","age":28,"gender":"男"}
IE兼容
注意: json对象在ie7及以下的浏览器中不支持,所以在这些浏览器中会报错;
eval();
1.这个函数可以用来执行一段字符串形式的js代码,并将执行结果返回
2.如果使用eval()执行的字符串中含有{},它会将{}当成是代码块,如果不希望将其当成代码快解析,则需要在字符串前后加一个();
3. eval()这个函数的功能很强大,可以直接执行一个字符串中的js代码,但是在开发中尽量不要使用,首先它的执行性能比较差,然后它还有安全隐患
var str2 = "alert('hello')";
eval (str2); // hello
var str = ' ({"name" : "孙悟空" , "age" : 18 , "gender" : "男"}) ' ;
var obj = eval(str);
console. log(obj); // {name: "孙悟空", age: 18, gender: "男"}
如果需要兼容ie7及以下的json操作,则可以通过引入一个外部的js文件来处理