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 的Document属性和方法集合
Jan 25 Javascript
javascript中取前n天日期的两种方法分享
Jan 26 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
本人自用的global.js库源码分享
Feb 28 Javascript
jQuery仿IOS弹出框插件
Feb 18 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
Apr 20 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
Node.js log4js日志管理详解
Jul 31 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 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实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
JS判断时间段的实现代码
2017/06/14 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
Python中的面向对象编程详解(下)
2015/04/13 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python表格存取的方法
2018/03/07 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
电脑专业个人求职信范文
2014/02/04 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
自我检讨报告
2015/01/28 职场文书
颐和园导游词400字
2015/01/30 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
学生会部长竞选稿
2015/11/19 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
python实现双向链表原理
2022/05/25 Python