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 相关文章推荐
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
May 21 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 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
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Bootstrap基础学习
2015/06/16 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python打包可执行文件的方法详解
2016/09/19 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Django开发的简易留言板案例详解
2018/12/04 Python
QML使用Python的函数过程解析
2019/09/26 Python
python实现canny边缘检测
2020/09/14 Python
python获取linux系统信息的三种方法
2020/10/14 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
数据库基础的一些面试题
2012/02/25 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
应聘收银员个人的求职信
2013/11/30 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
文明好少年事迹材料
2014/08/19 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
Go语言空白表示符_的实例用法
2021/07/04 Golang
P站美图推荐——变身女主角特辑
2022/03/20 日漫