本文详解JavaScript中对象与字符串的相互转换机制。重点解析JSON.stringify用于序列化,以及JSON.parse、eval和parseJSON用于反序列化的具体用法。深入探讨eval添加括号的原理,并总结在后台交互、跨页面传值及本地存储中的实际应用场景与注意事项。
JavaScript 序列化方法
(1)序列化
即将JS中的对象转换为字符串形式
1.调用obj.toJSONString()方法
var str=obj.toJSONString(); //将JSON对象转化为JSON字符
2.调用JSON.stringify(obj)方法
var str=JSON.stringify(obj); //将JSON对象转化为JSON字符
反序列化技术与原理
(2)反序列化
即将JS中的JSON字符串还原为对象
1.调用eval('('+josnStr+')')函数
var obj=eval("("+data+")");
为何在eval中需添加 "("+data+");//”?
原因在于eval自身的特性。因JSON以”{}”起止,JS将其视为语句块,故需强制转换为表达式。
2.调用jsonStr.parseJSON()方法
var obj = jsonStr.parseJSON(); //由JSON字符串转换为JSON对象
3.调用parse(jsonStr)函数
var obj = JSON.parse(data); //由JSON字符串转换为JSON对象
常见应用场景分析
(3)应用场景
1.向后端传递参数及接收返回值
若后端返回String(序列化后的Object),需在JS中使用eval或parse等转为Object后再使用;
若返回时已指定类型如Object,则可直接使用
2.页面间数据传递,尤其是数组场景
必须使用序列化,否则IE会报错:无法执行已释放的Script代码
3.进行本地存储操作时
存入本地window.localStorage.setItem(key,value)的value为JSON序列化字符串;获取到的window.localSorage.getItem(key)亦为JSON序列化字符串,需经反序列化后方可使用(常见于JSON序列化数组)
如有不足敬请指正!愿对您有所帮助!
总结
至此本文内容结束,希望本文对大家的学习或工作有参考价值,感谢支持。欲了解更多请查阅下方相关链接