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构造函数的重载和工厂方法
Apr 07 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
Nov 07 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
Jan 17 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
Aug 16 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 Javascript
JavaScript 原型与原型链详情
Nov 02 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开发大型项目的一点经验
2006/10/09 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
Javascript实现单例模式
2016/01/24 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
Python画图学习入门教程
2016/07/01 Python
OpenCV实现人脸识别
2017/04/07 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Django之模型层多表操作的实现
2019/01/08 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
团委书记的竞聘演讲稿
2014/04/24 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS