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 相关文章推荐
Javascript load Page,load css,load js实现代码
Mar 31 Javascript
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
解析Vue2.0双向绑定实现原理
Feb 23 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
js中let和var定义变量的区别
Feb 08 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 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
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Scrapy框架使用的基本知识
2018/10/21 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
python 读取.nii格式图像实例
2020/07/01 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
庆祝国庆节标语
2014/10/09 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
JS ES6异步解决方案
2021/04/29 Javascript
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python