JS复习:第二十章

一、JSON

1.JSON的语法可以表示以下三种类型的值:

  (1)简单值:字符串、数值、布尔值和null。如:5,“Hello,World!”

  (2)对象:javascript中对象字面量:

        var person = {

          name : "Nicholas",

          age : 29

        };

        JSON表示上述对象的方式如下:

        {

          "name" : "Nicholas",

          "age" : 29  

        }

        也可以像下面这样嵌入对象:

        {

          "name" : "Nicholas",

          "age" : 29,

          "school" : {

            "name" : "Merrimack College",

            "location" : "North Andover,MA" 

          }  

        }

    与javascript不同,JSON对象的属性名必须始终加双引号。

  (3)数组:JSON数组采用的就是javascript中的数组字面量形式。

      例如,下面是javascript中的数组字面量:

      var values = [25,"hi",true];

      在JSON中,可以采用同样的语法表示同一个数组:

      [25,"hi",true]

    把数组和对象结合起来,可以构成更复杂的数据集合:

    [

      {

        "title" : "Professional JavaScript",

        "authors" : [

          "Nicholas C. Zakas"

        ],

        edition : 3,

        year : 2011

      },

      {

        "title" : "Professional JavaScript",

        "authors" : [

          "Nicholas c. Zakas"

        ],

        edition : 2.

        year : 2009

      },

    ]

  对象和数组通常是JSON数据结构的最外层形式。

二、序列化选项

  stringify( )和parse( )

  stringify( )接收两个参数:第一个参数可以是一个数组也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。

  1.过滤结果:

  如果过滤器参数是数组,那么JSON.stringify( )的结果中将只包含数组中列出的属性。例如:

  var book = {

    [

      {

        "title" : "Professional JavaScript",

        "authors" : [

          "Nicholas C. Zakas"

        ],

        edition : 3,

        year : 2011

      },

    ]

  };

  var jsonText = JSON.stringify( book ,["title" , "edition"] );

  JSON.stringify( )的第二个参数是一个数组,其中包含两个字符串:"title"和"edition"。因此返回的数据就只会包含这两个属性:{"title":"Professional JavaScript","edition:3"}

  2.字符缩进

  JSON.stringify( )的第三个参数用于控制结果中的缩进和空白符。例如,要在每个级别缩进4个空格,可以这样写代码:

  var book={

        "title" : "Professional JavaScript",

        "authors" : [

          "Nicholas C. Zakas"

        ],

        edition : 3,

        year : 2011

      };

  var jsonText = JSON.stringify(book,null,4);

  保存在jsonText中的字符串如下所示:

  {

    "title":"Professional JavaScript",

    "authors":[

      "Nicholas C. Zakas"

    ],

    "edition":3,

    "year":2011

  }

  3.toJSON( )方法

  可以为任意对象添加toJSON( )方法,比如:

  var book={

        "title" : "Professional JavaScript",

        "authors" : [

          "Nicholas C. Zakas"

        ],

        edition : 3,

        year : 2011

        toJSON : function( ){

          return this.title;

        }

      };

  var jsonText = JSON.stringify(book);

posted @ 2016-03-22 09:50  -cyber  阅读(199)  评论(0编辑  收藏  举报