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 相关文章推荐
IE bug table元素的innerHTML
Jan 11 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
Oct 29 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
wap浏览自动跳转到wap页面的js代码
May 17 Javascript
React Native仿美团下拉菜单的实例代码
Aug 08 Javascript
Vue 拦截器对token过期处理方法
Jan 23 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
Nov 07 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+MYSQL的文章管理系统(二)
2006/10/09 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php-msf源码详解
2017/12/25 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python 字典(Dictionary)操作详解
2014/03/11 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python3安装speech语音模块的方法
2018/12/24 Python
python实现抽奖小程序
2020/04/15 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
卫校毕业生自我鉴定
2013/10/31 职场文书
财务工作个人求职的自我评价
2013/12/19 职场文书
学雷锋感言
2015/08/03 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
网络研修随笔感言
2015/11/18 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang