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 相关文章推荐
基于jquery的inputlimiter 实现字数限制功能
May 30 Javascript
js禁止小键盘输入数字功能代码
Aug 01 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
微信小程序 require机制详解及实例代码
Dec 14 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
使用JS判断页面是首次被加载还是刷新
May 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
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
js倒计时小程序
2013/11/05 Javascript
Express.JS使用详解
2014/07/17 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
阿德的梦教学反思
2014/02/06 职场文书
物理研修随笔感言
2014/02/14 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
辞职信格式模板
2015/02/27 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
告知书格式
2015/07/01 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
Go语言入门exec的基本使用
2022/05/20 Golang