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语言中的Literal Syntax特性分析
Mar 08 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
vue实现商品加减计算总价的实例代码
Aug 12 Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 Javascript
vue.js click点击事件获取当前元素对象的操作
Aug 07 Javascript
JS数组去重详情
Nov 07 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
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
python连接sql server乱码的解决方法
2013/01/28 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
行政办公室岗位职责
2014/03/18 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
放牛班的春天观后感
2015/06/01 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js