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获得选中文本内容的方法
Dec 02 Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
基于Vue开发数字输入框组件
Dec 19 Javascript
React Native日期时间选择组件的示例代码
Apr 27 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
详解vue中async-await的使用误区
Dec 05 Javascript
node.js连接mysql与基本用法示例
Jan 05 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
Apr 01 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
Jun 05 Javascript
node 版本切换的实现
Feb 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乱码问题
2012/03/25 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
跟老齐学Python之一个免费的实验室
2014/09/14 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Python如何发布程序的详细教程
2018/10/09 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
自荐信的两点禁忌
2013/10/30 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
职业生涯规划书范文
2014/03/10 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
销售代理协议书
2014/09/30 职场文书
未婚证明书模板
2014/10/08 职场文书
天那边观后感
2015/06/09 职场文书
Golang map映射的用法
2022/04/22 Golang