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 版
Mar 24 Javascript
Javascript string 扩展库代码
Apr 09 Javascript
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
iframe窗口高度自适应的实现方法
Jan 08 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
15个值得收藏的JavaScript函数
Sep 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
vue实现文字加密功能
2019/09/27 Javascript
js实现星星打分效果
2020/07/05 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Django中多种重定向方法使用详解
2019/07/17 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
粗加工管理制度
2014/02/04 职场文书
高中打架检讨书
2014/02/13 职场文书
大学军训感言200字
2014/02/26 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
python如何正确使用yield
2021/05/21 Python
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js