JSON字符串和JSON对象相互转化实例详解


Posted in Javascript onJanuary 05, 2017

本文实例讲述了JSON字符串和JSON对象相互转化的方法。分享给大家供大家参考,具体如下:

将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键

例如:

JSON字符串:

var str = '{ "name": "name1","sex": "m" }';

JSON对象:

var obj = { "name": "name1", "sex": "w" };

一、JSON字符串转换为JSON对象

要使用上面的str1,必须使用下面的方法先转化为JSON对象:

var obj = eval('(' + str + ')'); 
//由JSON字符串转换为JSON对象,必须把文本包围在括号中,这样才能避免语法错误: "(" + str+ ")"

或者

var obj = $.parseJSON(str);
// 将JSON字符串转化为JSON对象 (jQuery)

或者

var obj= str.parseJSON();
//由JSON字符串转换为JSON对象

或者

var obj= JSON.parse(str);
//由JSON字符串转换为JSON对象

然后,就可以这样读取:

Alert(obj.name);
Alert(obj.sex);

特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。

二、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。

例如:

var str=obj.toJSONString();
//将JSON对象转化为JSON字符

或者

var str=JSON.stringify(obj);
//将JSON对象转化为JSON字符
alert(str);

总结:

上面我们也看到了在进行类型转化的时候总的来说有两种,一种是JavaScript自带的解析器,而另一种就是JSON解析器,其中javascript解析器可以编译执行任何的javascript代码所以这里隐藏了一个潜在的安全问题而JSON解析器只能识别JSON文本,而不会编译脚本所以比较安全,而且JSON解析器的速度更快。

上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。

Javascript 相关文章推荐
javascript正则表达式中参数g(全局)的作用
Nov 11 Javascript
Web开发之JavaScript
Mar 29 Javascript
设置checkbox为只读(readOnly)的两种方式
Oct 11 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
js实现微信分享代码
Oct 11 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
Oct 20 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
jQuery无刷新上传之uploadify简单代码
Jan 17 Javascript
使用原生js写ajax实例(推荐)
May 31 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
vue实现菜单切换功能
May 08 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 #Javascript
jQuery选择器实例应用
Jan 05 #Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
Jan 05 #Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 #Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 #Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 #Javascript
JS实现给对象动态添加属性的方法
Jan 05 #Javascript
You might like
php 浮点数比较方法详解
2017/05/05 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
使用JavaScript破解web
2018/09/28 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python默认参数调用方法解析
2020/02/09 Python
python读取xml文件方法解析
2020/08/04 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
一些网络技术方面的面试题
2014/05/01 面试题
民政局个人整改措施
2014/09/24 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript