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实现的页面日历
Nov 04 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
jquery版轮播图效果和extend扩展
Jul 18 jQuery
Koa项目搭建过程详细记录
Apr 12 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
小程序实现图片预览裁剪插件
Nov 22 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 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
.htaccess文件保护实例讲解
2011/02/06 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
js实现表格数据搜索
2020/08/09 Javascript
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
python 实现A*算法的示例代码
2018/08/13 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python列表推导式操作解析
2019/11/26 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
技术人员面试提纲
2013/11/28 职场文书
投标邀请书范文
2014/01/31 职场文书
英语教育专业自荐信
2014/05/29 职场文书
授权收款委托书范本
2014/10/10 职场文书
小学中等生评语
2014/12/29 职场文书
签订劳动合同通知书
2015/04/16 职场文书