在开始介绍本文要介绍的两个方法之前,我们先来看一下什么是JSON对象。
一、JSON对象
1、什么是json?
JSON(JavaScript Object Notation)javscript对象标记,是一种轻量级的数据交换格式。简单来说,json就是用JavaScript语法写的一个特殊的标记字符串。
2、json的作用
(1)简化用JavaScript定义对象的方式;
(2)也能用在AJAX中,做为数据载体之一。
JSON之所以流行,拥有与JavaScript类似的语法并不是全部原因。更重要的一个原因是,可以把JSON数据结构解析为有用的JavaScript对象。
3、json的语法作用
(1)一个对象用{}表示;
(2)一对属性之间,使用 ':'来分隔,属性结束后,使用 ',' 来分隔,最后一个除外;
(3)一个数组,使用[]符号;
JSON对象有两个方法:stringify()与parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。
二、JSON.stringify() 序列化选项
方法: JSON.stringify(object[, replacer[, space]])
作用: 使用JSON.stringify()方法可以将JSON对象转为字符串。
参数:
1)object参数:是要转为字符串的JSON对象。
2)replacer参数:可选,这个参数是一个过滤器,可以是改变字符串转换过程的函数,也可以是一组String和Number对 象。
这些对象用作一个白名单,用于选择要转换为字符串的对象的属性。如果这个值是空或没有提供,则在所得的JSON字符串中包含对象的所有属性。
3)space参数:可选,是一个String或Number对象,用于把空白插入输出的JSON字符串,以提高可读性。如果这是一个数值,则表示用作空白的空格字符数;如果该数值大于10,就取其值为10;小于1的值表示不应使用空格。如果这是一个字符串(如果该字符串多于10个字符,就取前10个字符),就把该字符串用作空白。如果没有提供这个参数(或者为空),就不使用空白。
var book = {
"title":"JavaScript 高级程序设计",
"authors":[
"Nicholas C. Zakas"
],
"edition":3,
"year":2012
};
var jsonBook = JSON.stringify(book,["title","edition"]);
console.log(jsonBook);
输出结果:
var book = {
"title":"JavaScript 高级程序设计",
"authors":[
"Nicholas C. Zakas"
],
"edition":3,
"year":2012
};
var jsonbook = JSON.stringify(book,function(key,value){
switch(key){
case "title":
return value;
case "authors":
return value;
case "edition":
return undefined;
case "year":
return 2015;
default:
return value;
}
});
console.log(jsonbook);
输出结果:
var book = {
"title":"JavaScript 高级程序设计",
"authors":[
"Nicholas C. Zakas"
],
"edition":3,
"year":2012
};
var jsonbook = JSON.stringify(book,null,4);
console.log(jsonbook);
var book = {
"title":"JavaScript 高级程序设计",
"authors":[
"Nicholas C. Zakas"
],
"edition":3,
"year":2012
};
var jsonbook = JSON.stringify(book,null,'--');
console.log(jsonbook);
输出结果:
var jsontext = '{"title":"JavaScript 高级程序设计","authors":["Nicholas C. Zakas"],"year":2015}';
var contact = JSON.parse(jsontext);
console.log(contact.title + ", " + contact.authors + ", "+ contact.year);
实例二:使用 JSON.parse 反序列化 ISO 格式的日期字符串, 将返回Date格式对象,然后调用getFullYear()方法。
var book = {
"title":"JavaScript 高级程序设计",
"authors":[
"Nicholas C. Zakas"
],
"edition":3,
"year":2011,
releaseDate:new Date(2011,11,1)
};
var jsonBook = JSON.stringify(book);
var bookCopy = JSON.parse(jsonBook,function(key,value){
if(key == "releaseDate"){
return new Date(value);
}else{
return value;
}
});
console.log(bookCopy.releaseDate.getFullYear());