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 相关文章推荐
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
Aug 11 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
深入浅析Vue.js计算属性和侦听器
May 05 Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 Javascript
JS实现带阴历的日历功能详解
Jan 24 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 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应用技巧
2008/03/27 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
JsRender实用入门教程
2014/10/31 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
python中OrderedDict的使用方法详解
2017/05/05 Python
详解flask表单提交的两种方式
2018/07/21 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
零基础小白多久能学会python
2020/06/22 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
应聘自荐书
2013/10/08 职场文书
阿德的梦教学反思
2014/02/06 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
物流管理专业自荐信
2014/06/23 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
详解Redis集群搭建的三种方式
2021/05/31 Redis