前端学习(四十九) JavaScript-JSON(javaScript)

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对象中属性值有不同的类型,所以要对不同的类型值做不同的转换

猜你喜欢

转载自blog.csdn.net/zy21131437/article/details/81221172