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 相关文章推荐
JQuery中html()方法使用不当带来的陷阱
Apr 07 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
JQuery中SetTimeOut传参问题探讨
May 10 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
May 08 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
javascript实现状态栏中文字动态显示的方法
Oct 20 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
js友好的时间返回函数
Aug 24 Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
js利用iframe实现选项卡效果
Aug 09 Javascript
Vue js with语句原理及用法解析
Sep 03 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
thinkphp模板继承实例简述
2014/11/26 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
详解PHP归并排序的实现
2016/10/18 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
技校毕业生自荐信范文
2014/03/07 职场文书
英文演讲稿
2014/05/15 职场文书
小区文明倡议书
2014/05/16 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js