Javascript学习笔记——JSON

Json学习笔记

一、含义

  • Javascript Object Notation(Js对象表示法);

二、语法

  1. 简单值
//字符串或数值,如
5
"hello json"
  • 对象
    • 对象的属性名称必须加双引号。
    • 对象可以嵌套
//Js中的对象字面量
var person={
    name:"Zhang",
    age:22
}
//json对象
var person={
    "name":"Zhang",
    "age":22
}
//嵌套对象
var person2={
    "name"="Zhang",
    "school"={
        "name":"NCEPU",
        "city":"BeiJing"        
    }
  • 数组
    • 把数组和对象结合,组成复杂的数据集合
var books=[
//元素0
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
},
//元素1
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 2,
year: 2009
}
]

三、序列化

  1. 使用JOSN对象的stringify()方法
var book = {
title: "Professional JavaScript",
authors: [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
};
var jsonText=JSON.stringify(book);
  • 过滤结果
    • 参数为数组
    var jsonText=JSON.stringify(book,["title","edition"]);
    //输出:{"title":"Professional JavaScript","edition":3}
- 参数为函数    
    var jsonText = JSON.stringify(book, function(key, value){
        switch(key){
        case "authors":
            return value.join(",")
        case "year":
            return 5000;
        case "edition":
            return undefined;
        default:
            return value;
        }
    });
    //输出{"title":"Professional JavaScript","authors":"Nicholas C. Zakas","year":5000}
- 函数返回undifined,则删除该属性
  • 缩进
    • 缩进以提高可读性
    var jsonText=JSON.stringify(book,null,4);
    //缩进格式的JSON
- 用自定义字符缩进
    var jsonText=JSON.stringify(book,null,"--");
    // {
    // --"title": "Professional JavaScript",
    // --"authors": [
    // ----"Nicholas C. Zakas"
    // --],
    // --"edition": 3,
    // --"year": 2011
    // }
  • toJSON方法
    • 如果对象中存在toJSON方法,序列化时只返回方法的内容
    var book = {
        "title": "Professional JavaScript",
        "authors": [
        "Nicholas C. Zakas"
        ],
        edition: 3,
        year: 2011,
        toJSON: function(){
            return this.title;
        }
    };
    var jsonText = JSON.stringify(book);
    // "Professional JavaScript"

四、解析

  1. 还原函数
var book = {
    "title": "Professional JavaScript",
    "authors": [
    "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011,
    releaseDate: new Date(2011, 11, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy=JSON.parse(jsonText,function(key,value){
    if(key=="releaseDate"){
        return new Date(value);
    }else{
        return value;
    }
}
- 函数返回undifined,则删除该属性

posted on 2016-04-16 20:24  网中的小鱼  阅读(167)  评论(0)    收藏  举报

导航