JSON中双引号的轮回使用过程中一定要小心


Posted in Javascript onMarch 05, 2014

1. 如果JSON对象中有属性是包含双引号的,比如

{ 
"description": "25"" 
}

如果转换成字符串形式,将自动加上反斜线,变为"25\"", 然后传递给REST API,保存到MongoDB中。

此时如果使用MongoDB的shell显示该数据,为"25\"", 正确。

2. 但是如果用C++ driver读取这个值是,则得到"25"", 因此如果将它直接返回到浏览器端,用jQuery.parseJSON()来解析就会报错。

C++段序列化成字符串的时候需要判断一下,将"替换成\".

void string_to_json_string(std::string const& str, std::string & json_str) { 
std::stringstream ss; 
for (size_t i = 0; i < str.length(); ++i) { 
if (str[i] == '"') { 
ss << '\\' << '\"'; 
} else { 
ss << str[i]; 
} 
} 
json_str = ss.str(); 
}

3. 如果JavaScript对"25\""调用jQuery.parseJSON()之后,反斜线已经消失,又变为"25"". 如果再次对该属性值调用jQuery.pareseJSON则又会出错。

JavaScript必须写代码防止错误:

removeDoubleQuotes: function(str) { 
return str.replace("\"", "\\\""); 
},

这就是双引号在JSON中的轮回。够麻烦吧,要小心点。
Javascript 相关文章推荐
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
辨析JavaScript中的Undefined类型与null类型
May 26 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
基于JavaScript实现图片剪切效果
Mar 07 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
基于vue.js实现的分页
Mar 13 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
微信小程序冒泡事件及其阻止方法实例分析
Dec 06 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 #Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 #Javascript
js时间比较示例分享(日期比较)
Mar 05 #Javascript
对于Form表单reset方法的新认识
Mar 05 #Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 #Javascript
7个JS基础知识总结
Mar 05 #Javascript
100个不能错过的实用JS自定义函数
Mar 05 #Javascript
You might like
虫族 Zerg 历史背景
2020/03/14 星际争霸
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
Javascript中的delete介绍
2012/09/02 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
json数据的列循环示例
2013/09/06 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
21行Python代码实现拼写检查器
2016/01/25 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Django框架模板介绍
2019/01/15 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Keras设置以及获取权重的实现
2020/06/19 Python
梅西百货官网:Macy’s
2020/08/04 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
中国梦的演讲稿
2014/01/08 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
如何书写授权委托书?
2019/06/25 职场文书