欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON简介

程序员文章站 2022-06-17 19:21:10
...

1.JSON语法

JSON是一种轻量级的数据交换格式。
JSON语法可以表示以下三种类型的值:

  • 简单值:string,number,boolean,null,不支持undefined

  • 对象

  • 数组

语法:

  1. JSON字符串必须使用双引号

  2. 没有声明变量

  3. 没有末尾的分号

2.JSON解析与序列化

2.1JSON序列化

序列化函数:JSON.stringify()
JSON.stringify()可接收三个参数:

  • 要序列化的JavaScript对象

  • 一个过滤器(可以是一个数组也可以是一个函数)

  • 控制结果中的缩进和空白符
    用法1:过滤结果

//数组过滤器
var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
var jsonText = JSON.stringify(book,["title","edition"]);//jsonText 中只包含title,edition两个属性
//函数过滤器
var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
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;

        }
   }             
 );//jsonText 中只包含title,edition两个属性

用法2:字符串缩进

var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
var jsonText = JSON.stringify(book, null,4);
console.log(jsonText);
//输出结果
{
    "title": "Professional JavaScript",
    "edition": 3,
    "year": 2011,
    "authors": [
        "EvanChen",
        "Nicholas"
    ]
}

2.2解析选项

函数:JSON.parse()
JSON.parse()可接收两个参数

  • JSON数据

  • 还原函数,该函数将在每个键值对上调用

var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ],
                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;
        }
    }
);
console.log(bookCopy.releaseDate.getFullYear());