关于字符串和对象互转以及JSON.parse()的坑,涉及到前端开发中的常见问题。下面就从以下三个方面进行详细讲解:
- JSON.parse()的使用
- 对象转字符串
- 字符串转对象
1. JSON.parse()的使用
1.1. JSON.parse()的作用
将JSON字符串转换成JavaScript对象或数据结构。
1.2. JSON.parse()的限制
JSON.parse()只能解析符合JSON规范的字符串,否则会报错。
示例1:
var obj = {
name: '小明',
age: 18
};
var str = JSON.stringify(obj);
var result = JSON.parse(str);
console.log(result);
输出结果为:
{ name: '小明', age: 18 }
示例2:
var str = "{ name: '小明', age: 18 }";
var result = JSON.parse(str);
console.log(result);
输出结果为:
Uncaught SyntaxError: Unexpected token n in JSON at position 2
1.3. JSON.parse()的注意事项
当JSON.parse()解析一个符合规范但是内容包含了JavaScript表达式的字符串时,可能会引发安全问题。
示例3:
var str = '{"name":"小明", "age": 18, "func": function() {console.log("Hello World")}}';
var result = JSON.parse(str);
console.log(result);
输出结果为:
Uncaught SyntaxError: Unexpected token f in JSON at position 32
2. 对象转字符串
2.1. JSON.stringify()的作用
将JavaScript对象或数据结构转换成JSON字符串。
2.2. JSON.stringify()的注意事项
在将JavaScript对象或数据结构转换成JSON字符串时,需要注意对原始类型的转换规则。Infinity、NaN和null在转换成JSON字符串时会被转换成null,undefined和函数则无法通过JSON.stringify()转化。
示例4:
var obj = {
name: '小明',
age: null,
hobby: ['篮球', '游泳', '电影'],
children: {
son: '小红',
daughter: '小兰'
},
func: function() {console.log('Hello World')}
};
var str = JSON.stringify(obj);
console.log(str);
输出结果为:
{"name":"小明","age":null,"hobby":["篮球","游泳","电影"],"children":{"son":"小红","daughter":"小兰"}}
示例5:
var obj = {
name: '小明',
age: undefined,
func: function() {console.log('Hello World')}
};
var str = JSON.stringify(obj);
console.log(str);
输出结果为:
{"name":"小明"}
3. 字符串转对象
3.1. eval()的作用
将字符串解析为JavaScript代码并执行。
3.2. eval()的注意事项
在执行eval()函数时,需注意安全问题。如果被解析的字符串中包含了来自外部的不受信任的脚本,则有可能被注入恶意代码。
示例6:
var str = "({name:'小明',age:18})";
var obj = eval(str);
console.log(obj);
输出结果为:
{name: "小明", age: 18}
示例7:
var str = "alert('Hello World');";
eval(str);
输出结果为:
弹出警告框"Hello World"
以上就是关于字符串和对象互转以及JSON.parse()的坑的攻略,希望能帮助到开发者避免常见的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于字符串和对象互转以及JSON.parse()的坑 - Python技术站