解析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 相关文章推荐
学习并汇集javascript匿名函数
Nov 25 Javascript
Javascript学习笔记-详解in运算符
Sep 13 Javascript
window.parent与window.openner区别介绍
Apr 12 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 Javascript
javascript实现点亮灯泡特效示例
Oct 15 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
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
一次编写,随处运行
2006/10/09 PHP
php zend解密软件绿色版测试可用
2008/04/14 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
python set集合使用方法解析
2019/11/05 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Keras自定义IOU方式
2020/06/10 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
艺术学院毕业生求职信
2014/07/09 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
个人自荐书范文
2015/03/09 职场文书
检讨书怎么写
2015/05/07 职场文书
班主任培训研修日志
2015/11/13 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
logback 实现给变量指定默认值
2021/08/30 Java/Android
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL