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 相关文章推荐
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
JavaScript对数字的判断与处理实例分析
Feb 02 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
js实现交通灯效果
Jan 13 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
Node.js API详解之 V8模块用法实例分析
Jun 05 Javascript
原生js实现简单轮播图
Oct 26 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
Python素数检测实例分析
2015/06/15 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python中logging日志库实例详解
2020/02/19 Python
python网络编程之五子棋游戏
2020/05/14 Python
python中selenium库的基本使用详解
2020/07/31 Python
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
什么是会话Bean
2015/05/14 面试题
清华大学自主招生自荐信
2014/01/29 职场文书
超市中秋节活动方案
2014/02/12 职场文书
高三家长寄语
2014/04/03 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
团干部培训方案
2014/06/03 职场文书
员工工作能力评语
2014/12/31 职场文书
营业员岗位职责范本
2015/04/14 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
交通安全教育主题班会
2015/08/12 职场文书
2016大学军训通讯稿
2015/11/25 职场文书