JSON中双引号的轮回使用过程中一定要小心
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则又会出错。
removeDoubleQuotes: function(str) {
return str.replace("\"", "\\\"");
},
这就是双引号在JSON中的轮回。够麻烦吧,要小心点。
相关推荐
-
java对象序列化与反序列化的默认格式和json格式使用示例
默认格式 复制代码 代码如下: public class MyClass implements Serializable{...} 序列化: 复制代码 代码如下: ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); output.writeObject(myObject); 反序列化: 复制代码 代码如下: ObjectInputStream input = new Objec
-
PHP使用json_encode函数时不转义中文的解决方法
本文实例讲述了PHP使用json_encode函数时不转义中文的解决方法.分享给大家供大家参考.具体方法如下: json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,本文就来给各位整理一个关于json不转义中文问题处理技巧,相信对大家有所帮助. 如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如: 复制代码 代码如下: echo json_encode(array('你好')); // 输出: ["\u4f60\u597
-
Android中生成、使用Json数据实例
1.Json的制作 复制代码 代码如下: package com.example.usingjson2; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override prote
-
JSON.parse()和JSON.stringify()使用介绍
parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":"23"}' 结果: JSON.parse(str) Object age: "23" name: "huangxiaojian" __proto__: Object 注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常. stringify(
-
jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: 复制代码 代码如下: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try { servletResponse.setContentType("text/plain;charset=UTF-8"); pw = servletResponse.getWrit
-
ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息
一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): 复制代码 代码如下: <span class="kwd">public<span class="pln"> <span class="typ">JsonResult<span class="pln"> <span class=&
-
使用JSON.parse将json字符串转换成json对象的时候会出错
在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展示的是C#代码编码和转义几个常用特殊字符.经过笔者测试,将这些符号编码和转义之后,大部分json字符串都可以转换成json对象了.如果遇到个别问题,应朝着这个方向去查找问题. theString = theString
-
PHP中使用json数据格式定义字面量对象的方法
PHPer都知道PHP是不支持字面量了,至少目前版本都不支持.比如,在JS中可以这样定义object 复制代码 代码如下: var o = { 'name' : 'qttc' , 'url' : 'www.jb51.net' }; alert(o.name); Python中定义字典,也可以这样定义: 复制代码 代码如下: o = { 'name' : 'qttc' , 'url' : 'www.jb51.net' } print o['name'] 但在PHP中这么定义object: 复制代码
-
在JavaScript中使用JSON数据
JSON 是 JavaScript 原生格式,这意味着 在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON语法 JSON建构于两种结构: 对象--名称/值对的集合.不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表(keyed list),或者关联数组.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'名称/值' 对
-
js使用eval解析json实例与注意事项分享
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包.JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'
-
直接在JS里创建JSON数据然后遍历使用
之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码如下:(创建的是JSON对象) var YearSelect = {}; var Year = 2014; var DateOption; for (var i = Year; i < Year + 12; i++) { DateOption = {'Year':i, 'Month':i-Year+1}; / alert(DateOption.Year) Year
-
教你如何使用PHP输出中文JSON字符串
复制代码 代码如下: json_endoce: http://cn.php.net/json_encodejson_dedoce: http://cn.php.net/json_decode json_encode - 对变量进行 JSON 编码,并返回 value 值的 JSON 形式,例如: 复制代码 代码如下: <?php$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);echo json_encode($arr)
随机推荐
- 详解AngularJS中的依赖注入机制
- JavaScript之filter_动力节点Java学院整理
- 使用Linux正则表达式灵活搜索文件中的文本
- Java通过匿名类来实现回调函数实例总结
- 浅析Java的Spring框架中IOC容器容器的应用
- 找不到类型或命名空间名称“Server”(是否缺少 using 指令或程序集引用?)
- 简单时间提示DEMO从0开始一直进行计时
- 从string类的实现看C++类的四大函数(面试常见)
- 初学者必看的Ajax总结篇
- Git 教程之标签详解
- 了不起的node.js读书笔记之node.js中的特性
- C# 三种序列化方法分享
- filezilla Failed to create listen socket on port 21 for IPv4 解决办法
- C++ 中滚动条的滚动问题
- Spring整合CXF webservice restful实例详解
- c# split分隔字符串使用方法
- MSSQL数据库迁移之用户名问题
- 机器学习10大经典算法详解
- Vue组件通信之Bus的具体使用
- React从react-router路由上做登陆验证控制的方法