一、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);

JS复习:第二十章的更多相关文章

  1. JS复习--更新结束

    js复习-01---03 一 JS简介 1,文档对象模型 2,浏览器对象模型 二 在HTML中使用JS 1,在html中使用<script></script>标签 2,引入外部 ...

  2. JavaScript高级程序设计:第二十章

    第二十章 一.语法 JSON的语法可以表示以下三种类型的值: (1)简单值 (2)对象 JSON的对象与javascript字面量有一些不同.例如,在javascript中,前面的对象字面量可以写成下 ...

  3. 第二十章 Django数据库实战

    第二十章 Django数据库实战 第一课 获取单表单数据的三种方式: urls.py中的路由代码: path('busniess',views.busniess), views.py中代码: def ...

  4. Gradle 1.12翻译——第二十章. 构建环境

    有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...

  5. “全栈2019”Java多线程第二十章:同步方法产生死锁的例子

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. “全栈2019”Java异常第二十章:自定义异常详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  7. “全栈2019”Java第二十章:按位与、按位或、异或、反码、位运算

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. 2017.3.14 activiti实战--第二十章--REST服务

    学习资料:<Activiti实战> 第二十章 REST服务 20.1 通信协议概述 略. 20.2 REST API概述 资源分类 资源基础URI 说明 Deployments manag ...

  9. python 教程 第二十章、 数据库编程

    第二十章. 数据库编程 环境设置 1).安装MySQL-python http://www.lfd.uci.edu/~gohlke/pythonlibs/ MySQL-python-1.2.3.win ...

  10. 20190920 On Java8 第二十章 泛型

    第二十章 泛型 多态的泛化机制: 将方法的参数类型设为基类: 方法以接口而不是类作为参数: 使用泛型: 泛型实现了参数化类型 简单泛型 Java 泛型的核心概念:你只需告诉编译器要使用什么类型,剩下的 ...

随机推荐

  1. 为知笔记markdown插件安装

    Wiz.Editor.md 是一个基于 Editor.md 构建的为知笔记 Markdown 插件. 主要特性 多种样式主题 支持实时预览 支持代码高亮 支持搜索替换 支持ToC目录 Tex数学公式 ...

  2. 【多重背包】HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

    Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) ...

  3. [ An Ac a Day ^_^ ][kuangbin带你飞]专题八 生成树 POJ 1679 The Unique MST

    求最小生成树是否唯一 求一遍最小生成树再求一遍次小生成树 看看值是否相等就可以 #include<cstdio> #include<iostream> #include< ...

  4. 前端技术——WebFont与Sprite

    一.WebFont web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体. 我们在文档中显示的字体应该在系统中能找到才会正常显示,比如你在word中使用了黑体字 ...

  5. 为什么switch...case语句比if...else执行效率高

    在C语言中,教科书告诉我们switch...case...语句比if...else if...else执行效率要高,但这到底是为什么呢?本文尝试从汇编的角度予以分析并揭晓其中的奥秘. 第一步,写一个d ...

  6. http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html

    http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html

  7. 【angular+bootstrap】angular初级的时间选择器

    近期的一个项目,是用angular来写的,本来框架就是第一次接触,使用相关插件的时候就感觉更加没有头绪了,其中一个插件就是时间选择器.比较好用时间选择器就是bootstrap里面的datetimepi ...

  8. Chapter 20_1 table库

    table库是由一些辅助函数构成,把table作为数组来操作,所有的函数都忽略传入参数的那张表中的非数字键. 无论如何,若一个操作需要取表的长度,这个表必须是一个真序列,或是拥有__len元方法. 提 ...

  9. 关于ios原声嵌入web页面的问题

    当在一个界面中既有原生又有web的时候,如果想让上下整体滑动的话,我们怎么确定web的高度呢,下面分享一下我的心得 首先在webView的代理方法中我们可以获取到加载完整个web页面的高度 - (vo ...

  10. mac上设置sudo不要密码

    觉得每次sudo都需要设置密码太过麻烦,于是折腾了一番,谁知走了一番弯路记录下来. 以下是网上找到的步骤 chmod u+w /etc/sudoers  给当前用户增加写权限 vi /etc/sudo ...