JSON字符串和对象之间的转换详解


Posted in Javascript onMay 26, 2015

JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集。正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。

eval函数 JSON文本转换为对象

为了将JSON文本转换为对象,可以使用eval函数。eval函数调用JavaScript编辑器。由于JSON是JavaScript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生JavaScript的语法歧义。
var obj = eval('(' + JSONTest + ')');eval函数非常快速。它可以编译执行任何JavaScript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。这样可以更安全的解析JSON文本。使用XmlHttp的web应用,页面之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效JSON文本。eval函数将执行恶意的脚本。

JSON解释器 JSON.parse、JSON.stringify

使用JSON解析器可以防止像eval函数转换JSON文本为对象那样的安全隐患。JSON解析器只能辨识JSON文本,拒绝所有脚本。提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数。

目前,Firefox、Opera、IE8以上版本也提供了本地JSON支持。其中,JSON解释器提供的函数有:JSON.parse、JSON.stringify。

对于那些并不提供本地JSON支持的浏览器可以引入脚本json2.js,来实现JSON转换功能。json2.js脚本可到https://github.com/douglascrockford/JSON-js/blob/master/json2.js页面下载。

JSON.parse 函数

将JSON文本转换为对象。
JSON.parse(text[, reviver])
参数
text
必选项。要转换为对象的JSON文本。
reviver
可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。

JSON.stringify 函数

将对象转换为JSON文本。
JSON.stringify(value[, replacer[, space]])
参数
text
必选项。要转换为JSON文本的对象。
reviver
可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
space
可选项。格式化输出JSON文本缩进的空格数量。如果不提供该参数将不会格式化输出。
参数reviver的委托类型
reviver(key, value)
reviver函数的中的this是当前所遍历到的节点的父节点。当所遍历的是根节点的时候,父节点是个Object对象,根节点是该对象的一个属性,属性名是空字符串。
参数
key
当父节点是数组Object,key为数组索引,否则key为Object属性名。
value
节点值。
注:JSON不支持循环数据结构。

jQuery.parseJSON( jsonTex )

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。

以上所述就是本文的全部内容了希望大家能够喜欢。

Javascript 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
基于jquery的滚动新闻列表
Jun 19 Javascript
通过url查找a元素并点击
Apr 09 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
JS出现失效的情况总结
Jan 20 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
vue元素实现动画过渡效果
Jul 01 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
Vue组件基础用法详解
Feb 05 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
May 25 #Javascript
Javascript实现飞动广告效果的方法
May 25 #Javascript
javascript自定义右键弹出菜单实现方法
May 25 #Javascript
JS+DIV实现鼠标划过切换层效果的方法
May 25 #Javascript
JavaScript实现仿网易通行证表单验证
May 25 #Javascript
js+cookies实现悬浮购物车的方法
May 25 #Javascript
手机开发必备技巧:javascript及CSS功能代码分享
May 25 #Javascript
You might like
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
松下Panasonic RF-B65电路分析
2021/03/02 无线电
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP链表操作简单示例
2016/10/15 PHP
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
Python 深入理解yield
2008/09/06 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python线程池threadpool使用篇
2018/04/27 Python
python把转列表为集合的方法
2019/06/28 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
校园摄影活动策划方案
2014/02/05 职场文书
人力资源总监工作说明
2014/03/03 职场文书
商铺门前三包责任书
2014/07/25 职场文书
商品陈列协议书
2014/09/29 职场文书
行政主管岗位职责
2015/02/03 职场文书
Web应用开发TypeScript使用详解
2022/05/25 Javascript