初识JSON
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON</title>
<!-- 如果需要兼容ie7及以下的JSON操作,可以通过引入外部js文件来处理-->
<script async src="DOM/js/json2.js"></script>
<script>
window.onload = function () {
/**
* JSON:
* -JS中的对象只有JS认识,其他的的语言都不认识
* -JSON就是一个特殊格式的字符串,该字符串可以被任何语言识别
* 并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的交互
* -JSON
* -JavaScript Object Notation JS对象表示法
* -JSON和JS的对象格式一样,只不过JSON字符串中属性名必须加""双引号
* JS中加不加都可以识别,其他的和JS语言一致
* JSON分类:
* 1.对象 {}
* 2.数组 []
* JSON中允许的值:
* 1.字符串
* 2.数值
* 3.布尔值
* 4.null
* 5.对象(不包括函数对象)
* 6.数组
*/
var obj = '{"name":"孙悟空","age":18,"gender":"男"}';
var arr = '[1,2,3,"hellow",true]';
var obj2 = '{"arr":[1,2,3]}';
var arr2 = '[{"name":"孙悟空","age":18,"gender":"男"},{"name":"孙悟空","age":18,"gender":"男"}]';
/**
* 将JSON字符串转换为JS对象
* 在JS中为我们提供了一个工具类,叫JSON
* 这个对象可以帮助我们将一个JSON对象转换为一个JS对象,也可以将一个JS对象转换为JSON
*/
var json1 = '{"name":"孙悟空","age":18,"gender":"男"}';
/**
* json -->js对象
* JSON.parse()方法:
* -可以将JSON字符串转换成一个js对象
* -它需要一个JSON字符串作为参数,会将该字符串转换JS对象并返回
*/
//转换为普通对象
var myJson = JSON.parse(json1);
console.log(myJson.name);//孙悟空
//转换为数组对象
var myJson2 = JSON.parse(arr);
console.log(myJson2[3]);//hellow
/**
* js对象-->json
* JSON.stringify()方法:
* -可以将一个js对象转换为JSON字符串
* -需要一个js对象作为参数,会返回一个JSON字符串
*/
var obj3 = {name: "猪八戒", age: 28, gender: "男"};
var str = JSON.stringify(obj3);
console.log(str);//{"name":"猪八戒","age":28,"gender":"男"}
/**
* JSON这个对象在IE7及以下的浏览器中不支持,所以在这些浏览器中调用时会报错
* eval()方法:
* -该方法可以用来执行一段字符串形式的代码,并将执行结果返回
* -如果使用eval()执行的字符串中含有{},它会将{}当成代码块
* 如果不希望将其当成代码块执行,则需要在字符串前后各加一个()
* 就是将其用括号包围起来。
* 例如: eval("("+obj4+")");
* -eval()这个函数功能十分强大,可以直接执行一个字符串的js代码
* 但是在开发中尽量不要使用,首先其执行性能比较差
* 而且还具有安全隐患。
*
* 注意:双引号里不能再包括双引号,要用单引号
*/
var str2 = "alert('hellow');";
eval(str2);//弹出hellow弹窗
var obj4 = '{name: "猪八戒", age: 28, gender: "男"}';
var str3 = eval("(" + obj4 + ")");
console.log(str3);
};
</script>
</head>
<body>
</body>
</html>
注意点
1.对象中属性可不加双引号,但是在JSON中必须加
2.能不使用eval()方法就不使用,存在安全问题。
3.如果希望兼容ie7及以下浏览器使用JSON可以印日这个json2.js