JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON相关的知识,希望对你有一定的参考价值。
JSON.stringify()把一个JavaScript对象序列化为一个JSON字符串,保存在变量jsontext中:
var book = {
title: "Liqiang",
author: ["lisir","qq"],
edition: 3,
year: 2017
};
var jsontext = JSON.stringify(book);
保存在jsontext中的字符串如下格式:
{"titile":"Liqiang"."author":["lisir","qq"],"editon":3,"year":2017}
注释:JSON.stringify()可以包含三个参数,其中第二个参数是个过滤器,可以是一个数组(如["titile","editon"]则表示在序列化的时候只包含这两个对象中的属性),也可以是一个函数,传入的函数接收两个参数,属性(健)名和属性(健)值。根据属性名可以知道如何处理要序列化的对象汇中的属性。如下:
var book = {
title: "Liqiang",
author: ["lisir","qq"],
edition: 3,
year: 2017
};
var jsontext = JSON.stringify(book, function (key,value) {
switch (key) {
case "author":
return value.join(",");
case "year":
return 5000;
case "edition":
return undefined;
default:
return value;
}
});
该函数中根据传入参数的不同返回不同的值。
第三个参数是一个选项,表示是否在JSON字符串中保留缩进。用法如下:
var jsontext = JSON.stringify(book,null,4);
该函数表示在每个级别都要进行缩进4个空格,并且字符串会自动换行。
toJSON()方法
可以为任何对象添加toJSON方法,比如:
var book = {
title: "Liqiang",
author: ["lisir","qq"],
edition: 3,
year: 2017,
toJSON:function () {
return this.title;
}
};
①假如对象中有toJSON方法,则使用该方法,优先返回该方法中的值;②如果提供了第二个参数,应用这个函数过滤器;③对第二步返回的每个值进行相应的序列化;④如果提供了第三个参数,则执行相应的格式化。
将JSON字符串直接传递给JSON.parse()就可以得到相应的JavaScript值:
var bookCopy = JSON.parse(jsontext);
JSON.parse()函数也可以接收另一个参数,如下先为对象设置了一个releaseDate属性,再在JSON.parse()函数中传入一个参数,该参数为一个函数,旨在把序列化后的date值再设置成一个date对象(否则知识一个字符串),所以在函数的最后可以调用getFullYear()函数。
var book = {
title: "Liqiang",
author: ["lisir","qq"],
edition: 3,
year: 2017,
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;
}
});
alert(bookCopy.releaseDate.getFullYear());
以上是关于JSON的主要内容,如果未能解决你的问题,请参考以下文章