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 相关文章推荐
响应鼠标变换表格背景或者颜色的代码
Mar 30 Javascript
跨域表单提交状态的变相判断代码
Nov 12 Javascript
javascript Demo模态窗口
Dec 06 Javascript
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
javascript实现简易计算器的代码
May 31 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
Vue 仿QQ左滑删除组件功能
Mar 12 Javascript
对layui中table组件工具栏的使用详解
Sep 19 Javascript
在vue中根据光标的显示与消失实现下拉列表
Sep 29 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大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
在Python中使用成员运算符的示例
2015/05/13 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python 反向输出字符串的方法
2018/07/16 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Python调用Windows命令打印文件
2020/02/07 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
python3注册全局热键的实现
2020/03/22 Python
python实现处理mysql结果输出方式
2020/04/09 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
园林设计师自荐信
2013/11/18 职场文书
中青班党性分析材料
2014/02/16 职场文书
服务员岗位职责范本
2015/04/09 职场文书
英语演讲开场白
2015/05/29 职场文书
物业公司管理制度
2015/08/05 职场文书
辞职信怎么写?
2019/05/21 职场文书
六年级情感作文之500字
2019/10/23 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL