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 相关文章推荐
JS分割字符串并放入数组的函数
Jul 04 Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
详解React 服务端渲染方案完美的解决方案
Dec 14 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 Javascript
使用js和canvas实现时钟效果
Sep 08 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
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
PHP的PDO连接讲解
2019/01/24 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
window.open的功能全解析
2006/10/10 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
python中学习K-Means和图片压缩
2017/11/20 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
J2EE模式面试题
2016/10/11 面试题
《狮子和兔子》教学反思
2014/03/02 职场文书
搞笑征婚广告词
2014/03/17 职场文书
公司任命书范本
2014/06/04 职场文书
学校火灾防控方案
2014/06/09 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电