JSON 对象简述

JSON(JavaScript Object Notation)是JavaScript的对象表达法,它是一种数据格式,不是编程语言,而且JSON并不从属于JavaScript,很多编程语言都有针对JSON的解析器和序列化器。

一、JSON的语法

首先说下,我们JSON不支持变量、函数或对象实例,它就是一种表示结构化数据的格式。

1.简单值:与JavaScript使用相同的语法,可以在JSON中表示字符串、数值、布尔值和null,但不支持underfined。

如:2   ;‘’hello world‘’

注:JSON字符串使用的时候必须双引号(“ ”)

2.对象:对象作为一种复杂的数据类型,表示的是一组无序的键值对,每个键值对中的值可以是简单值也可以是复杂数据类型的值

如:JSON对象写法

{
   "name":"Tim",
   "age":33
}

JavaScript对象字面量写法

var object ={

  name :"Tim",
  age:29,
    
};

区别:

a.JSON对象没有声明变量,因为我们JSON没有变量的概念

b. 末尾无分号(;)

c.对象的属性必须加双引号

3. 数组

数组也是一种复杂数据类型,表示一种有序的值的列表,可以通过数值索引来访问其中的值。

如:JSON

[25,"hi",true]

JavaScript

var values=[25,"hi",true];

区别:

a. JSON无数组

b 末尾无分号(;)

二、解析与序列化

JSON数据结构可以被解析为有用的数据结构,与XML数据结构解析相比,JSON数据结构解析就太简单了,因此JSON成为了web服务开发中交换数据的事实标准。

JSON对象的方法

1.JSON.stringify()

var book={
    title:"JavaScript 权威指南"  , 
    authors:[
             "David Flanagan  "
     ],
     edition:3,
     year:2007



};

var jsonText=JSON.stringify(book);
console.log(jsonText);// {"title":"JavaScript 权威指南","authors":["David Flanagan "],"edition":3,"year":2007}

1.1 JSON.stringify()的序列化

可通过两个参数指定以不同的方式序列化JavaScript对象

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

第二个参数是一个选项,表示是否在JSON字符中保留缩进。

  var book={
    title:"JavaScript 权威指南"  , 
    authors:[
             "David Flanagan  "
     ],
     edition:3,
     year:2007

};

var jsonText=JSON.stringify(book,["title","edition"]);//数组过滤器,只显示数组中列出的属性
console.log(jsonText);//{"title":"JavaScript 权威指南","edition":3}

var jsonText1=JSON.stringify(book);//无参数

//函数过滤器
var jsonText2=JSON.stringify(book,function(key,value){

switch(key){
case "authors":
return value.join(",");//将数组连接为一个字符串

case "year":
return 2000; //改值为2000

case "edition":
return undefined; //删除该属性

default:
return value;
}
});
console.log(jsonText1);//{"title":"JavaScript 权威指南","authors":["David Flanagan  "],"edition":3,"year":2007}
console.log(jsonText2);//{"title":"JavaScript 权威指南","authors":"David Flanagan  ","year":2000}

//字符串缩进

var jsonText3=JSON.stringify(book,null,4);//每个级别缩进4个空格
console.log(jsonText3);

var jsonText4=JSON.stringify(book,null,"--");//缩进参数是字符串
console.log(jsonText4);

jsonText3的输出结果:               

jsonText4的输出结果:

2.JSON.parse()

把JSON字符串解析为原生JavaScript值

var book={
    title:"JavaScript 权威指南"  , 
    authors:[
             "David Flanagan  "
     ],
     edition:3,
     year:2007



};



var jsonText1=JSON.stringify(book);
console.log(jsonText1);
var bookCopy=JSON.parse(jsonText1);
console.log(bookCopy);

bookCopy 输出结果:

2.1 JSON.parse()的解析选项

JSON.parse()可以接受一个函数参数,在每个键值对上调用,该函数被称为还原函数(reviver)

var book={
    title:"JavaScript 权威指南"  , 
    authors:[
             "David Flanagan  "
     ],
     edition:3,
     year:2007,
     releaseDate:new Date(2019,8,18),



};
var jsonText1=JSON.stringify(book);
console.log(jsonText1);//{"title":"JavaScript 权威指南","authors":["David Flanagan  "],"edition":3,"year":2007,"releaseDate":"2019-09-17T16:00:00.000Z"}
var bookCopy=JSON.parse(jsonText1,function(key,value){
    if(key=="releaseDate"){
        return new Date(value);
    }else{
        return value;
    }
});
console.log(bookCopy.releaseDate.getFullYear());//2019

 JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。

原文地址:https://www.cnblogs.com/smile-xin/p/11372591.html