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继承的实现
Oct 24 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
Html5的placeholder属性(IE兼容)实现代码
Aug 30 Javascript
jQuery中hasClass()方法用法实例
Jan 06 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
jQuery文字轮播特效
Feb 12 Javascript
详解用node.js实现简单的反向代理
Jun 26 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
vue组件name的作用小结
May 23 Javascript
深入浅析Vue 中 ref 的使用
Apr 29 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保存session到memcache服务器的方法
2016/01/19 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
js表单登陆验证示例
2016/10/19 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python3.x上post发送json数据
2018/03/04 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python常用排序算法的实现代码
2019/11/08 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
keras输出预测值和真实值方式
2020/06/27 Python
Python执行时间的几种计算方法
2020/07/31 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
医学生自荐信
2013/12/03 职场文书
财产公证书样本
2014/04/04 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
付款证明模板
2015/06/19 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
PHP中->和=>的意思
2021/03/31 PHP