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 相关文章推荐
兼容Mozilla必须知道的知识。
Jan 09 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
js实现模糊匹配功能
Feb 15 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
Aug 23 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
详解nvm管理多版本node踩坑
Jul 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
解决GD中文乱码问题
2007/02/14 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
理解JS事件循环
2016/01/07 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
vue生命周期实例小结
2018/08/15 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
出纳岗位职责模板
2013/11/27 职场文书
初一家长会邀请函
2014/01/31 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
给学校的建议书
2014/03/12 职场文书
小学见习报告
2014/10/31 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
Golang的继承模拟实例
2021/06/30 Golang