javascript中的json知识点(json中包含双引号和\斜杠等等这些特殊字符)
我就直接po代码和截图了,代码中有注释
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript(json知识点)-测试json</title>
<script type="text/javascript">
//json字符串
var jsonStr1 = '{ "firstName":"令狐冲" , "lastName":"Doe" }';
//json对象
var jsonStr2 = { "firstName":"张无忌" , "lastName":"Doe" };
//json对象可以直接使用,使用方式是json对象名.属性名 比如jsonStr2.firstName
console.log("-----" + jsonStr2.firstName);
var obj = eval(jsonStr2);
console.log("#####" + obj.firstName);
var str1 = '{ "name": "韦小宝", "sex": "man" }';
//由JSON字符串转换为JSON对象
var obj2 = eval('(' + str1 + ')');
console.log(obj2.name);
var str2 = '{ "name": "杨过", "sex": "test" }';
//由JSON字符串转换为JSON对象
var obj3 = eval('({ "name": "郭靖", "sex": "test" })');
console.log(obj3.name);
var obj4 = eval('(' + '{ "name": "杨康", "sex": "test" }' + ')');
console.log(obj4.name);
var obj5 = eval('(' + str2 + ')');
console.log(obj5.name);
var str3 = '{ "name": "乔峰", "sex": "test" }';
var obj6 = JSON.parse(str3); //由JSON字符串转换为JSON对象
console.log(obj6.name);
//测试json对象的属性值中包含:[]{}这种字符,测试在解析时,是否会报错(测试后的结论是,不会报错)
var jsonStr3 = { "firstName":"段{\"a\":\"b\",\"e\":\"f\"}[]{}誉" , "lastName":"Doe" };
console.log("*****" + jsonStr3.firstName);
var obj7 = eval(jsonStr3);
console.log("=====" + obj7.firstName);
//测试json对象的属性值中包含双引号和\斜杠等等这些特殊字符(解决办法是可以使用转义符\斜杠来进行处理)
var jsonStr4 = { "firstName":"虚[]:{\"\"}竹ab\\cd" , "lastName":"Doe" };
console.log("*****" + jsonStr4.firstName);
console.log("-------------------");
//正确写法1 如下:
var obj9 = eval('(' + str2 + ')');
console.log("----------" + obj9.name);
//正确写法2 如下:
var obj10 = eval("(" + str2 + ")");
console.log("###########" + obj10.name);
console.log("***********");
//如下这种写法会报错
var obj8 = eval(str2);//需要在str2左右两边加上小括号才能正确解析,如:eval('(' + str2 + ')');
console.log(obj8.name);
</script>
</head>
<body>
<h1>javascript(json知识点)-测试json</h1>
</body>
</html>