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字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
快速掌握Node.js环境的安装与运行方法
Feb 16 Javascript
详解js中==与===的区别
Jan 08 Javascript
js实现产品缩略图效果
Mar 10 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
node.js 中间件express-session使用详解
May 20 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
vue 将页面公用的头部组件化的方法
Dec 18 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
JavaScript计算正方形面积
Nov 26 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
关于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数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
大学军训感言800字
2014/02/27 职场文书
学雷锋月活动总结
2014/04/25 职场文书
新闻报道策划方案
2014/06/11 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP