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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
关于JavaScript中var声明变量作用域的推断
Dec 16 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
Jan 25 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
Sep 09 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
使用JavaScript破解web
Sep 28 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
vue实现多条件和模糊搜索功能
May 28 Javascript
layui中的switch开关实现方法
Sep 03 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动态生成版权所有信息的方法
2015/03/24 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
js tab效果的实现代码
2009/12/26 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
jquery图片切换插件
2015/03/16 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
python连接字符串的方法小结
2015/07/13 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python文件读写代码实例
2019/10/21 Python
python构造IP报文实例
2020/05/05 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
优秀驾驶员先进事迹材料
2014/05/04 职场文书
实习护士自荐信
2014/06/21 职场文书
统计工作个人总结
2015/03/03 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python