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 相关文章推荐
Display SQL Server Login Mode
Jun 21 Javascript
javascript 解析url的search方法
Feb 09 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 Javascript
js判断IE浏览器版本过低示例代码
Nov 22 Javascript
Jquery插件easyUi表单验证提交(示例代码)
Dec 30 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
为什么node.js不适合大型项目
Apr 28 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构造函数实例讲解
2013/11/13 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
Nodejs之http的表单提交
2017/07/07 NodeJs
删除table表格行的实例讲解
2017/09/21 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python查找相似单词的方法
2015/03/05 Python
python与php实现分割文件代码
2017/03/06 Python
Python生成数字图片代码分享
2017/10/31 Python
有趣的python小程序分享
2017/12/05 Python
python实现任意位置文件分割的实例
2018/12/14 Python
Django发送邮件功能实例详解
2019/09/02 Python
python列表推导式入门学习解析
2019/12/02 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python基于openpyxl生成excel文件
2020/12/23 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书