JavaScript中JSON的解析与序列化

本文详细介绍了如何使用JSON.stringify()和JSON.parse()方法进行JavaScript对象与JSON字符串之间的转换,包括序列化时的过滤、缩进设置及解析时的自定义转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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;
          }
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值