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简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
Feb 25 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
Nov 30 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
使用OPENLAYERS3实现点选的方法
Sep 24 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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 文件上传功能实现代码
2009/06/24 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
新年主持词
2014/03/27 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
跳槽求职信范文
2014/05/26 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
英语演讲开场白
2015/05/29 职场文书
中秋节晚会开场白
2015/05/29 职场文书