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 相关文章推荐
js判断url是否有效的两种方法
Mar 04 Javascript
JQUERY简单按钮轮换选中效果实现方法
May 07 Javascript
jQuery检查事件是否触发的方法
Jun 26 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
Nov 23 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
如何使用angularJs
May 08 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
VSCode 配置uni-app的方法
Jul 11 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php中文验证码实现示例分享
2014/01/12 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Python制作数据导入导出工具
2015/07/31 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python虚拟环境项目实例
2017/11/20 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
英语专业毕业生自荐信范文
2013/12/31 职场文书
大学新生欢迎词
2014/01/10 职场文书
实用的简历自我评价
2014/03/06 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
工程主管竞聘书
2015/09/15 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
Go语言 详解net的tcp服务
2022/04/14 Golang