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增加join方法的实现代码
Nov 28 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
javascript字符串函数汇总
Dec 06 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
jQuery表单验证之密码确认
May 22 jQuery
jQuery实现form表单序列化转换为json对象功能示例
May 23 jQuery
支付宝小程序tabbar底部导航
Nov 06 Javascript
React父子组件间的传值的方法
Nov 13 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
用PHP调用数据库的存贮过程
2006/10/09 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
Python中itertools模块用法详解
2014/09/25 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Tensorflow 实现释放内存
2020/02/03 Python
pycharm快捷键汇总
2020/02/14 Python
关于Django Models CharField 参数说明
2020/03/31 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
python 实现有道翻译功能
2021/02/26 Python
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
医院门卫岗位职责
2013/12/30 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
同志主要表现材料
2014/08/21 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
民事起诉状范文
2015/05/19 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python