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 相关文章推荐
基于JavaScript实现继承机制之调用call()与apply()的方法详解
May 07 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
Mar 06 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 Javascript
vue项目实现减少app.js和vender.js的体积操作
Nov 12 Javascript
Vue使用Proxy代理后仍无法生效的解决
Nov 13 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 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面向对象编程快速入门
2006/12/14 PHP
php 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
python进程和线程用法知识点总结
2019/05/28 Python
Python 监测文件是否更新的方法
2019/06/10 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
python如何快速生成时间戳
2020/07/21 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
一年级家长会邀请函
2014/01/25 职场文书
先进事迹演讲稿
2014/09/01 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
辞职信格式模板
2015/02/27 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
Python编写nmap扫描工具
2021/07/21 Python