JSON
1.JSON是一种数据交换格式,
2.JSON的名称应该始终被双引号包裹,名称不加双引号或使用单引号是一种js对象的表示方法。
3.JSON的媒体类型是application/json.
4.JSON中的数据类型包括:
对象(用{}表示)
数组(用[]表示)
字符串("xxxx")
数字(不加双引号)
布尔值(true/false,必须使用小写形式表示,不加引号)
null(null,必须使用小写形式表示,不加引号)。
5.JSON中字符串的转义包括:
"---->\"
\---->\\
\/---->\\/(正斜线)
\b---->\\b(退格符)
\f---->\\f(换页符)
\t---->\\t(制表符)
\n---->\\n(换行符)
\r---->\\r(回车符)
\u263A---->\\u263A(十六进制字符)
6.JSON schema
可以使用SON schema进行数据值域/格式等验证,格式为:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"Cat"
}
7.使用JSON常见的安全问题是:跨站请求伪造和跨站脚本攻击。
顶层JSON数组,可能导致CSRF(cross-site request forgery)跨站请求伪造,顶级数组是合法的js脚本。
8.序列化
JSON.parse()可以将字符串反序列化为对象。
JSON.stringify()可以将对象序列化为数组。
jQuery.parseJSON()函数类似parse,它会先尝试使用JSON.parse(),如果浏览器不支持会使用类似eval()的new Function()实现。同时它会对一些不合法的字符进行检验,发现有注入的威胁,抛出错误。
9.ajax中的典型用法:
$.ajax({
url: "/service/resource/dict/getDictList",
type: "get",
//contentType : 'application/json',
//dataType:"json",
async: false,
data: {"dictCode":"RESOURCE_TYPE"},
success: function(ret) {
if(ret.success=='1'){
var data=ret.data;
}else{
alert("获取资源类型字典失败:"+ret.msg);
}
}
});
$.ajax({
type: "post",
dataType: "json",
contentType:"application/json",
async: false,
url: url,
data: JSON.stringify({"checkTaskId":checkTaskId}),
error: function () {
alert("提示", "查询任务id失败!");
},
success: function (ret) {
result = ret["data"];
}
});