JOSN是什么
全称:JavaScript Object Notation,JS对象表示法
是一种轻量级数据交换格式,将不同的类型的数据进行交换
var course={
name:'前端为专业',
lesson:'JSON',
releaseTime:1515220054000
}
//对应的JSON格式: {'name':'前端为专业','lesson':'JSON','releaseTime':1515220054000},key是字符串格式
一个合法类型的JSON格式:
对象{string:value}
数组[value],value可以是:string,number,object,array,true,false,null
JSON方法
JSON.parse(text[,reviver])
-将JSON转换为JavaScript值或对象
-参数
- test:要被解析的字符串
- reviver:这个不常用,代表规定原始value的改造规则
-返回值
- JavaScript值或对象
示例:
var c='{"name":"前端为专业","lesson":"JSON","releaseTime":1515220054000}' //用''括起来的JSON数据 var json=JSON.parse(c); console.log(json) //输出为:{name:"前端为专业",lesson:"JSON",releaseTime:1515220054000}
示例2
var json2=JSON.parse(c,function (key,value) { if (key=="name"){ return ‘前端为专业2期' } return value; });
这边通过匹配返回,最终输出:{name:"前端为专业2期",lesson:"JSON",releaseTime:1515220054000}
JSON.stringify(value[,replacer[,space]])
-JavaScript值或对象转换成JSON字符串
-参数
value:要被序列化的字符串值
replacer:规定原始value的改造规则,可以是函数、数组、null(不常用)
space:缩进用的字符串,可以使数字(<=10)、字符串、null(不常用)
示例:
var course={ name:'前端为专业', lesson:'JSON', releaseTime:1515220054000 } console.log(JSON.stringify(course)) //输出:{"name":"前端为专业","lesson":"JSON","releaseTime":1515220054000}
示例2
var abc=JSON.stringify(course,function (key,value) { if (key == 'releaseTime'){ return 2018 } return value; },'\n') //第三个参数是缩进,这边用的换行符,那么就输出就会换行 //输出:{ "name":"前端为专业", "lesson":"JSON", "releaseTime":2018 }
JSON的兼容性实现
不支持IE6,7,如果要支持IE6,7那么就要自己写对应的方法
if(!window.JSON){ //特性检测 window.JSON={ parse:function (sJSon) { return eval('('+sJSon+')'); //eval会将括号内的字符串当作表达式执行 }, stringify:function (value) { //分析value,将每一个属性转换为字符串 } } }
大致就是这样,stringift()方法通过分析,将每一个属性值都转换为字符串,但是因为JS对象中属性值有不同的类型,所以要对不同的类型值做不同的转换