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解决iframe高度自适应代码
Dec 20 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
网站基于flash实现的Banner图切换效果代码
Oct 14 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
AngularJS模块详解及示例代码
Aug 17 Javascript
微信小程序点击控件修改样式实例详解
Jul 07 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
Angular HMR(热模块替换)功能实现方法
Apr 04 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 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
星际流派综述
2020/03/04 星际争霸
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php输入流php://input使用浅析
2014/09/02 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
文本加密解密
2006/06/23 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
Python实现京东抢秒杀功能
2021/01/25 Python
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
教师应聘自荐信范文
2014/03/14 职场文书
父母对孩子的寄语
2014/04/09 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python