前言

前言

从事 Web 开发这么多年,我明白了一件事情:无论我投入多少精力学习这方面的知识,都很难抽时间来总结这些知识。这个迅猛发展的技术世界根本不会在意你有多忙。它不会说:“放轻松点,我会给你时间学习的,我明白由于家庭的原因,你很难抽出时间安静地学习。”它只会说:“快跟上,否则你就会落后。”

在我写作本书时,这样的思绪就一直萦绕在脑海中。这是一本很薄的书——我在书中刻意回避了“JSON 的历史”之类的话题。

尽管我对 JSON 之父 Douglas Crockford 心存感激,但我在书中没有提到他,也没有提到 JSON 是怎么一步步成长为今天的样子的。本书仅专注于 JSON 今天的样子。如果你想要了解 JSON 的历史,维基百科会是一个好去处(https://en.wikipedia.org/wiki/JSON#History)。

本书围绕 JSON 这一主题的核心展开讲解,力求抓住重点,深入浅出。毕竟,我们 IT 从业者都很忙。

读者对象

由于本书是为那些忙碌的 IT 从业者准备的,所以对读者肯定有一定的要求。你可能是刚入门的前端开发人员,或是在服务端应用开发中浸淫多年的老开发者,需要学习一些与 JSON 相关的知识来构建 Web API。你也可能是 PHP、Ruby、C、Java 或 ASP.NET 等语言的开发者,等等。越来越多不同行业的 IT 从业者都想要或需要学习 JSON。

本书中,我会避免使用过多的专业术语,并会为 Web 开发的新入行者解释一些基本概念。尽管我希望我的书适合每一位读者,但我肯定会假设你有一些相关的基础知识。如果你是昨天才进了 Web 开发的门,那么这本书可能不是你的最佳首选。

我假设你对以下概念有所了解。

  • HTML

    你需要了解 HTML 的用途,能够辨析其结构,并且至少认识一小部分 HTML 文档的标签。

  • JavaScript

    你需要了解 JavaScript 的用途,认识 <script> 标签,理解函数、变量之类的概念。如果你是 JavaScript 新手,不用担心,我会尽可能简化代码示例。

  • 编程概念

    对于新手,我解释了一些基本概念,如对象、数组。然而,如果你还没使用过任何一种编程语言,那么本书可能不适合你。

本书结构

多年以来,我一直在不断地接触并学习新技术,学习过程中也常常伴有项目进度的压力。所以在购买新的技术书之后,我会快速浏览其中的教程,尝试着尽快获取足够的信息以理解我现在所学的东西。我会带着以下三个基本问题来快速浏览一本书。

  • 它是什么?

  • 我可以用它做什么?

  • 那些别有用心的人会用它做什么?

在写作本书时,我针对这些问题给出了直切要害的答案,因此你不必费神搜寻这些答案。

在本书的第 1~4 章,我们将学习一些关于 JSON 的基础知识。首先,我会告诉你“它是什么”。以此为出发点,我们会一步步了解它的语法、语法验证、数据类型与模式验证。

第 5 章专注于研究 JSON 中的安全问题。我会在这里介绍客户端和服务端的概念,这一对概念在本书余下的章节中至关重要。同时,这一章也回答了第三个问题——“那些别有用心的人会用它做什么”。

剩余的章节会详细介绍 JSON 作为数据交换格式所扮演的种种角色。这些章节会为你解答第二个问题,即“我可以用它做什么”。

这些章节包含大量的 JSON 示例,以及使用 JSON 的交互技术。下面列举一些关于第 6~9 章的重要内容。

  • 技术

    这部分重点介绍了 jQuery、AngularJS 以及 CouchDB 等技术的进阶知识。把其中的每一个技术主题单拿出来都足够写一本书了(而且市面上确实也有这类书籍)。我没有介绍如何安装它们,也没有进行深入的讲解。我重点讲解的是如何将它们与 JSON 相结合。

    如果你希望尝试我在书中给出的关于这些技术的示例,那你可能需要做些工作来把环境配置起来。不过,书中的这些例子还是很简单的。如果你已经把环境搭建好并且基本可以运行的话,那么就可以着手尝试这些例子了。

  • 代码示例

    本书包含大量代码示例,其中部分示例所用的编程语言你可能没有接触过。虽然我不会讲解这些语言的语法,但你也不必因为不清楚语法而感到惊慌。对于你来说,最重要的是理解这段代码做了什么事情,关于这方面我会为你提供足够的解释。

    本书中的所有代码示例都可以在相应的 GitHub 代码库(https://github.com/lindsaybassett/json)中获取。

编写第 6~9 章的最终目的是让你明白 JSON 是如何在我们的实际生活中使用的,你可以尝试着把它们用在你自己的项目之中。如果你从没见过把 JSON 作为文档用在文档存储数据库中,那么你会在项目中使用它吗?知识就是力量。

本书的每一章都尽可能在“内容表述应简洁明了”与“要传达足够多的信息”之间寻求平衡,以免遗漏重要知识点。编写这本书的意图是让你既能快速理解并使用 JSON,又能深入理解 JSON 的本质及用途。

排版约定

本书使用的排版约定如下所示。

  • 楷体

    表示新术语。

  • 等宽字体(constant width

    表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

  • 等宽粗体(constant width bold

    表示应该由用户输入的命令或其他文本。

 该图标表示提示或建议。

 该图标表示一般注记。

 该图标表示警告或警示。

使用代码示例

补充材料(代码示例、练习等)可以从 https://github.com/lindsaybassett/json 下载。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发 O'Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和 ISBN。比如:“Introduction to JavaScript Object Notation by Lindsay Bassett (O'Reilly). Copyright 2015 Lindsay Bassett, 978-1-491-92948-3.”

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。

Safari® Books Online

Safari Books Online(http://www.safaribooksonline.com)是应运而生的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。技术专家、软件开发人员、Web 设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将 Safari Books Online 视作获取资料的首选渠道。

对于组织团体、政府机构和个人,Safari Books Online 提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问 O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,我们网上见。

联系我们

请把对本书的评价和问题发给出版社。

美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

  http://shop.oreilly.com/product/0636920041597.do

对于本书的评论和技术性问题,请发送电子邮件到:

  bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

  http://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

致谢

首先,我要感谢我的丈夫 Rhett,感谢他给予我的鼓励与支持,以及对我整日闭门写书的谅解。

同样我要感谢 Douglas Crockford,他发明了 JSON,我才得以写出一些有趣的东西。我还要感谢我的技术审稿人 Shelley Powers 和 Tom Marrs,他们给我的意见极具建设性,让本书增色不少。当然,书中的一切错误,责任都在我。

感谢我的编辑 Meg Foley,能和 Meg 一起工作真的很棒。

最后我要感谢 O'Reilly 给了我的书一个家,并将它出版发行。我一直都是O'Reilly 图书的粉丝,而和他们共事之后,我甚至变成了“骨灰粉”。

目录