JavaScript中JSON的解析与序列化

来源:互联网 发布:java物流项目简历 编辑:程序博客网 时间:2024/06/05 03:51
  • 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;    }}
0 0
原创粉丝点击