零、前言

JavaScript 对象表示法(JSON)已经迅速成为 Web 上结构化文档交换的通用语言,在许多领域超过了 XML。 有三个原因是显而易见的:它与 JavaScript 配合得很好,它很简单,而且工作正常。 然而,它的成功还有其他原因。 正如您将在本书的页面中看到的,它得到了各种语言和库的支持,使其易于在各种场景中使用。

在本书中,我提供了 JSON 的常用用法。 欢迎您从头到尾阅读这本书,看看 JSON 可以用于构建 web 和独立应用的所有方式。 但是,它被组织成一本烹饪书,因此您可以快速找到解决您现在可能想用 JSON 解决的特定问题的章节或食谱。 我建议略读这前言看到,在快速浏览第一章,阅读和写作 JSON 在客户机上第二章,阅读和写作 JSON 在服务器,根据你的兴趣,然后跳你最感兴趣的食谱。

这本书的内容

第 1 章在客户端上读和写 JSON,给你的食谱在许多客户端环境中读和写 JSON,包括 JavaScript, c#, c++, Java, Perl,和 Python。

第二章在服务器端读和写 JSON,另一方面,在典型的服务器端语言如 Clojure, c#, Node.js, PHP 和 Ruby 上看 JSON。 当然,您也可以使用这些语言编写客户端应用,就像您可以使用 c#或 Java 编写服务器一样。 所以这几章的食谱划分有点武断; 选择一门语言,投入其中吧!

第 3 章Using JSON in Simple AJAX Applications,向您展示了如何在当今的浏览器中应用 JSON 进行数据交换。

第 4 章使用 JSON 在 AJAX 应用与 jQuery 和 AngularJS,讨论了如何使用 JSON 与两个流行的 web 框架,jQuery 和 Angular。

第 5 章使用 JSON 与 MongoDB,展示了 MongoDB,一个流行的 NoSQL 数据库,使用 JSON 为其存储文档格式,并提供了您的食谱,在您的 web 应用中使用 MongoDB 作为 REST 服务。

第 6 章使用 JSON 与 CouchDB向您展示了另一个流行的 NoSQL 数据库 CouchDB 如何使用 JSON,以及如何在 web 应用中使用 CouchDB 作为独立的 REST 服务。

第七章,类型安全的方式使用 JSON,看着如何适应 type-free JSON 的性质与类型安全由 c#等语言,Java,打印稿减少应用的编程错误。

第 8 章Using JSON for Binary Data Transfer*,向您展示了如何,即使 JSON 是基于文本的文档格式,您仍然可以使用它来移动二进制数据,如果您必须这样做。

第 9 章使用 JSONPath 和 LINQ 查询 JSON,有关于如何编写对 JSON 文档的查询,以获得您正在寻找的数据切片的食谱。 这尤其强大,加上食谱从第五章,使用 JSON 与 MongoDB和【显示】第六章,来与它使用 JSON。

第 10 章移动平台上的 JSON*,教你如何在使用 Android, iOS 和 Qt 的移动应用中使用 JSON。

你写这本书需要什么

与许多其他技术书籍不同,这本书的重点在于它的示例中广泛的支持技术。 我不期望你有经验或工具来尝试这本书中的每一个例子,特别是现在。 然而,有一些东西是有帮助的。

您应该有一些编程经验,最好是 JavaScript。 除非配方是针对特定的编程语言(如 c#),否则本书中的配方都是用 JavaScript 编写的。 我这样做有两个原因。 首先,因为 JSON 中的“J”代表 JavaScript(尽管它广泛应用于其他语言),而且,在这个时代,每个程序员都应该至少对 JavaScript 有一点熟悉。

就软件环境而言,首先,你应该能够使用良好的网络浏览器,如 Chrome 或最新版本的 Safari、Firefox 或 Internet Explorer。 您可以在任何这些浏览器中使用 JavaScript 运行时来试验 JSON 并开始使用。

其次,许多客户机-服务器示例都使用 Node.js。 我选择 Node.js 作为服务器端示例编程,因为它也是 JavaScript,这意味着当您在客户端和服务器之间移动时,不需要跳过不同的语言语法。 Node.js 在 Windows、Mac OS X 和 Linux 上运行良好,所以设置它应该没有问题。

如果您对在数据库中使用 JSON 感兴趣,CouchDB 或 MongoDB 是您的最佳选择,我将在本书中讨论这两种方法。 你选择哪一个实际上是你的领域和个人偏好的问题。 我已经在各种项目中使用 MongoDB 5 年了,但最近开始喜欢上 CouchDB 的一些特性及其对 RESTful 服务的集成支持。

最后,如果你是微软开发人员,你可能需要特别注意使用 Newtonsoft Json 的 c#示例。 NET 贯穿本书。 Json。 NET 是 JSON 在 c#中应该是什么样的,它绝对值得你关注。

这本书是给谁的

如果您正在编写将结构化数据从一个地方移动到另一个地方的应用,那么这本书很适合您。 如果您一直使用 XML 来完成这项工作,这一点尤其正确,因为您完全有可能用更少的代码和更少的数据开销在 JSON 中完成大部分相同的工作。

虽然这本书的章节对应用的客户端和服务器端做了一些区分,但不管你是前端、后端还是全栈开发人员。 使用 JSON 背后的原则既适用于客户端,也适用于服务器端,事实上,理解这两方面的开发人员通常能够制作出最好的应用。

章节

在这本书中,你会发现一些经常出现的标题(准备,如何做,如何工作,还有更多,参见)。

为了明确说明如何完成一个食谱,我们使用以下部分:

准备好

本节将告诉您菜谱中需要的内容,并描述如何设置该菜谱所需的任何软件或任何初步设置。

How to do it…

本节包含遵循该菜谱所需的步骤。

How it works…

这一节通常包括对前一节所发生事情的详细解释。

There's more…

为了使读者对食谱有更多的了解,本节包含了关于食谱的额外信息。

参见

本节提供了有关菜谱的其他有用信息的有用链接。

会议

在本书中,您将发现许多文本样式,它们可以区分不同类型的信息。 下面是这些风格的一些例子和它们的含义的解释。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 url、用户输入和 Twitter 句柄如下所示:“让我们进一步查看loadsdumps。”

代码块的设置如下:

function doAjax() {
var xmlhttp;
  if (window.XMLHttpRequest)
  {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
}

当我们希望您注意代码块的特定部分时,相关的行或项以粗体显示:

function doAjax() {
var xmlhttp;
  if (window.XMLHttpRequest)
  {
    // code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
  }
}

命令行输入或输出如下所示:

# cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample
 /etc/asterisk/cdr_mysql.conf

新词语重要词语以粗体显示。 例如,你在屏幕上看到的文字,在菜单或对话框中,会出现这样的文本:“Then, you'll want to go toMore Tools|JavaScript console”。

注释

警告或重要注释出现在这样的框中。

提示

提示和技巧是这样的。

读者反馈

我们欢迎读者的反馈。 让我们知道你对这本书的看法——喜欢或不喜欢。 读者反馈对我们来说很重要,因为它可以帮助我们开发出你真正能够从中获得最大收益的游戏。

要向我们发送一般的反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在邮件的主题中提及书名。

如果你对某一主题有专长,并且你对写书或投稿感兴趣,请访问www.packtpub.com/authors查看我们的作者指南。

客户支持

现在,您是包书的骄傲所有者,我们有一些东西来帮助您从您的购买中获得最多。

下载示例代码

您可以从您的帐户http://www.packtpub.com下载您所购买的所有 Packt Publishing 书籍的示例代码文件。 如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,直接将文件通过电子邮件发送给您。

勘误表

尽管我们已经尽一切努力确保内容的准确性,但错误还是会发生。 如果您在我们的任何一本书中发现了错误——也许是文本或代码中的错误——如果您能向我们报告,我们将非常感激。 通过这样做,您可以避免其他读者感到沮丧,并帮助我们改进本书的后续版本。 如果你发现任何错误,请报告通过访问 http://www.packtpub.com/submit-errata,选择你的书,点击勘误表提交链接,并输入你的勘误表的细节。 一旦您的勘误表得到验证,您的提交将被接受,勘误表将被上传到我们的网站,或添加到该标题勘误表部分的任何现有勘误表列表中。

要查看之前提交的勘误表,请到https://www.packtpub.com/books/content/support,并在搜索栏中输入书名。 所需信息将出现在勘误表**部分下。

盗版

在互联网上盗版有版权的材料是所有媒体都存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在互联网上发现任何形式的我们作品的非法拷贝,请立即提供我们的地址或网站名称,以便我们采取补救措施。

请在<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,并提供疑似盗版资料的链接。

我们感谢您的帮助,以保护我们的作者和我们的能力给您带来有价值的内容。

问题

如果你对这本书的任何方面有问题,你可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们会尽力解决这个问题。****