您的位置:首页 > Web前端 > JavaScript

JavaScript中JSON的解析与序列化

2017-04-02 10:58 295 查看
stringify()

把JavaScript对象序列化为JSON字符串

var book = {
title: "Professional JavaScript",
authors: [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
}
var jsonText = JSON.stringify(book);


stringify()中可传三个参数:需要序列化的JavaScript对象、过滤器(数组/函数)、指定字符串缩进方式。

过滤结果

若为数组:
var book = {
"title":"Professional JavaScript",
"authors:" [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book,["title", "edition"]);
那么jsonText就为:
{"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;
}
}


字符串缩进

要在每个级别缩进4个空格
var jsonText = JSON.stringify(book,null,4);
将缩进字符改为短划线之类的任意字符:
var jsonText = JSON.stringify(book,null,"- -");


toJSON方法

直接在JavaScript对象中添加toJSON方法
var book = {
"title":"Professional JavaScript",
"authors:" [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011,
toJSON:function(){
return this.title;
}
};
var jsonText = JSON.stringify(book);


parse()

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

var bookCopy = JSON.parse(jsonText);


JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对儿上调用。

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: