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 相关文章推荐
初识JQuery 实例一(first)
Mar 16 Javascript
推荐20家国外的脚本下载网站
Apr 28 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
Feb 02 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
AngularJS自定义指令之复制指令实现方法
May 18 Javascript
js实现简单模态框实例
Nov 16 Javascript
Vue实现简单的跑马灯
May 25 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
JavaScript实现单例模式实例分享
2017/12/22 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
python中的itertools的使用详解
2020/01/13 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
校园绿化美化方案
2014/06/08 职场文书
办理房产证委托书
2014/09/18 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
Nginx配置之禁止指定IP访问
2022/05/02 Servers