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 生成指定范围数值随机数
Jan 09 Javascript
asp.net刷新本页面的六种方法总结
Jan 07 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
javascript实现无法关闭的弹框
Nov 27 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信小程序时间控件picker view使用详解
Dec 28 Javascript
微信小程序swiper使用网络图片不显示问题解决
Dec 13 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
JavaScript实时更新当前的时间的示例代码
Jul 15 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采集相关教程之一 CURL函数库
2010/02/15 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
python enumerate函数的使用方法总结
2017/11/15 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
新春文艺演出主持词
2014/03/27 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
完整版商业计划书
2014/09/15 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
出生公证书
2015/01/23 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
毕业生政审意见范文
2015/06/04 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python