解析JSON对象与字符串之间的相互转换


Posted in Javascript onDecember 18, 2013

在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台

接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递。

例如:前台按类的格式传递JSON对象:

var jsonUserInfo = "{\"TUserName\":\"" + userName + "\",\"TInterest\":\"" + interest + "\",\"TSex\":\"" + sex + "\",\"TCity\":\"" + city + "\",\"TDetail\":\"" + detail + "\"}";

如拼出的jsonUserInfo 无转义符号,需要var jsonArrayFinal = JSON.stringify(jsonArray);进行转换后再传递。

$.ajax(
                    {
                        type: "post",
                        url: "ReceiveHandler1.ashx",
                        data: { userInfo: jsonUserInfo, flag: "123456", key: "654321" },
                        dataType: "text",
                        success: function(data) {
                            $("#divShow").html(data);
                        }
 });

如果前台传递多个类格式的JSON数组,也就是集合类型:

例如:

[{"name":"a"},{"name","b"},{"name","c"}],则无法传递,此时必须使用JSON.stringify将数组对象转换成字符串,再进行AJAX传递即可。

比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象:

var a={"name":"tom","sex":"男","age":"24"};
var b='{"name":"Mike","sex":"女","age":"29"}';

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。

JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;

上面的转换可以这么写:
var a={"name":"tom","sex":"男","age":"24"};
var b='{"name":"Mike","sex":"女","age":"29"}';
var aToStr=JSON.stringify(a);
var bToObj=JSON.parse(b);
alert(typeof(aToStr));  //string
alert(typeof(bToObj));//object

JSON.stringify()

ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/js.html提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象,

var c='{"name":"Mike","sex":"女","age":"29"}';
var cToObj=eval("("+c+")");
alert(typeof(cToObj));

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。

Javascript 相关文章推荐
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
Javascript根据指定下标或对象删除数组元素
Dec 21 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
May 11 Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 Javascript
H5移动端图片压缩上传开发流程
Nov 09 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 Javascript
从vue源码看props的用法
Jan 09 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 Javascript
JavaScript实现简单拖拽效果
Sep 15 Javascript
cookie中的path与domain属性详解
Dec 18 #Javascript
浅析Cookie中的Path与domain
Dec 18 #Javascript
jquery.cookie用法详细解析
Dec 18 #Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 #Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 #Javascript
Javascript浅谈之this
Dec 17 #Javascript
将list转换为json失败的原因
Dec 17 #Javascript
You might like
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
python实现清屏的方法
2015/04/30 Python
python3调用R的示例代码
2018/02/23 Python
python的slice notation的特殊用法详解
2019/12/27 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
年度考核自我鉴定
2014/02/02 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
施工安全员岗位职责
2015/04/11 职场文书
公司保密管理制度
2015/08/04 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS