JSON

JSON

JSON——一种数据格式

语法

简单值——使用与JavaScript相同的语法,可以在JSON中表示string、number、boolean、null

"Hello world!"

对象——对象作为一种复杂数据类型,表示一组无序的键值对儿

{
    "name":"Nicholas",
    "age":29,
    "job":"engineer software",
     "school":{
         "name":"Merrimack Collage",
         "location":"North Andover, MA"
    
}
}

数组——数组作为一种复杂数据类型,表示一组有序的值的列表

{
   {
    "title":"Professional JavaScript",
    "author":"Nicholas C .Zake",
    "editon":3,
    "year":2011
   },
   {
    "title":"Professional JavaScript",
    "author":"Nicholas C .Zake",
    "editon":2,
    "year":2009
   },
   {
    "title":"Professional JavaScript",
    "author":"Nicholas C .Zake",
    "editon":2,
    "year":2008
   },
   {
    "title":"Professional JavaScript",
    "author":"Nicholas C .Zake",
    "editon":1,
    "year":2005
   }
}

JSON——不支持变量、函数或对象实例,是一种表示结构化数据的格式

解析与序列化

将JavaScript对象序列化为JSON字符串——stringify()

var book={
    "name":"Nicholas",
    "age":29,
    "job":"engineer software",
    "school":{
        "name":"Merrimack Collage",
        "location":"North Andover, MA"
   
}
};
var jsonText=JSON.stringify(book);

将JSON字符串解析为原生JavaScript值——parse()  || eval()

{

    "name":"Nicholas",

    "age":29,

    "job":"engineer software",

    "school":{

        "name":"Merrimack Collage",

        "location":"North Andover, MA"

    }

}

var bookCopy=JSON.parse(jsonText);

序列化选项

var book={
    "name":"Nicholas",
    "age":29,
    "job":"engineer software",
    "school":{
        "name":"Merrimack Collage",
        "location":"North Andover, MA"
   
}
};
var jsonText=JSON.stringify(book,[“name”,”age”]);

第二个参数是个过滤器,可以是一个数组,也可以是一个函数

数组——JSON.stringify()的结果将只包含数组中列出的属性

函数——根据键名可以知道如何处理序列化对象中的属性

var jsonText=JSON.stringify(book,function(key,value){
    switch(key){                   
        case "authors":
            return value.join(",");
        case "ayear":
            return 5000;
        case "editon":
            return undefined;
        default:
            return value;
    }
});

第三个参数是一个选项——表示是否在JSON字符串中保留 缩进

var jsonText=JSON.stringify(book,[“name”,”age”],--);

 

返回对象自身的JSON数据格式——toJSON()方法

var book={
    "name":"Nicholas",
    "age":29,
    "job":"engineer software",
    "school":{
        "name":"Merrimack Collage",
        "location":"North Andover, MA"
   
},
    toJSON:function(){
        return this.title;
    }
};
var jsonText=JSON.stringify(book);

解析选项

第二个参数是一个函数(还原函数),将在每 键值对儿上调用

var book={
    "name":"Nicholas",
    "age":29,
    "job":"engineer software",
    "school":{
        "name":"Merrimack Collage",
        "location":"North Andover, MA"
   
},
    "releaseDate":new Date(2011,11,1)
};
var jsonText=JSON.stringify(book);
var bookCopy=JSON.parse(jsonText,function(key,value){
    if(key=="realeaseDate"){
        return new Date(value);
    }else{
        return value;
    }
});
alert(bookCopy.releaseDate.getFullYear());

转载于:https://my.oschina.net/u/3240534/blog/857215

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值