JSON实战 ([美]汤姆·马尔斯(Tom Marrs)) (Z-Library)

Author: [美]汤姆·马尔斯(Tom Marrs)

商业

No Description

📄 File Format: PDF
💾 File Size: 3.3 MB
18
Views
0
Downloads
0.00
Total Donations

📄 Text Preview (First 20 pages)

ℹ️

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

📄 Page 1
(This page has no text content)
📄 Page 2
(This page has no text content)
📄 Page 3
(This page has no text content)
📄 Page 4
版权信息 书名:JSON实战 作者:[美]汤姆·马尔斯(Tom Marrs) 排版:昷一 出版社:人民邮电出版社 出版时间:2018-07-01 ISBN:9787115485557 — · 版权所有 侵权必究 · —
📄 Page 5
O'Reilly Media, Inc. 介绍 O'Reilly Media 通过图书、杂志、在线服务、调查研究和会议等方 式传播创新知识。自 1978 年开始,O'Reilly 一直都是前沿发展的见证 者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技 术趋势——通过放大那些“细微的信号”来刺激社会对新科技的应 用。作为技术社区中活跃的参与者,O'Reilly 的发展充满了对创新的倡 导、创造和发扬光大。 O'Reilly 为软件开发人员带来革命性的“动物书”;创建第一个商 业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软 件运动以此命名;创立了 Make 杂志,从而成为 DIY 革命的主要先 锋;公司一如既往地通过多种形式缔结信息与人的纽带。 O'Reilly 的 会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出 开创新产业的革命性思想。作为技术人士获取信息的选择,O'Reilly 现 在还将先锋专家的知识传递给普通的计算机用户。无论是通过图书出 版、在线服务或者面授课程,每一项 O'Reilly 的产品都反映了公司不 可动摇的理念——信息是激发创新的力量。 业界评论 “O'Reilly Radar 博客有口皆碑。” ——Wired
📄 Page 6
“O'Reilly 凭借一系列(真希望当初我也想到了)非凡想法建立 了数百万美元的业务。” ——Business 2.0 “O'Reilly Conference 是聚集关键思想领袖的绝对典范。” ——CRN “一本 O'Reilly 的书就代表一个有用、有前途、需要学习的主 题。” ——Irish Times “Tim 是位特立独行的商人,他不光放眼于最长远、最广阔的视 野,并且切实地按照 Yogi Berra 的建议去做了:‘如果你在路上遇到 岔路口,走小路(岔路)。’回顾过去,Tim 似乎每一次都选择了小 路,而且有几次都是一闪即逝的机会,尽管大路也不错。” ——Linux Journal
📄 Page 7
献词 致在 Web/ 移动端应用程序、REST API 和消息系统中提供或使用 JSON 数据的所有人,希望本书能让你的工作变得更加简单。 致 JSON 社区中提供工具和类库的无名英雄,感谢你们为 JSON 所付出的艰辛劳动。
📄 Page 8
前言 JavaScript 对象表示法(JavaScript Object Notation,JSON)已经成 为 RESTful 接口设计中的事实标准,架构师和开发人员可以使用一整 套现成的技术生态系统(鲜为人知的标准、工具和相关技术)来搭建 设计精巧的应用程序。JSON 不仅仅是 Ajax 调用中 XML 的一个简单替 代品,它也正日益成为互联网数据交换领域的骨干元素。严谨的标准 和技术最佳实践加上对 JSON 的热爱,有助于我们搭建一个真正优 雅、有用而又高效的应用程序。 唯一的缺憾是,没有一本书将这一切串连起来进行介绍。本书旨 在帮助开发人员使用 JSON,以搭建企业级的应用程序与服务。我们 的目标是促进 JSON 工具的使用,同时力图让消息 / 文档设计这一理 念在日新月异的 API 社区中成为“一等公民”。 我和 JSON 的接触始于 2007 年,当时我正在负责一个大型的 Web 门户项目,而该项目要求实现拥有几千个选项的下拉列表。那时我刚 好在阅读 Rebecca Riordan 所著的《Head First Ajax(中文版)》,因此 设计了比较优雅的架构方案。Ajax 能够解决延迟和页面加载问题,但 是该如何处理数据呢?前几年我一直在使用 XML 技术而且很成功, 但对于将数据从 Web 应用程序后端传输到前端展现层这样的任务,继 续使用 XML 技术显得有些大炮打蚊子。《Head First Ajax(中文 版)》中提到了名为 JSON 的一种新数据格式,而这一策略看上去似 乎是可行的。我的整个团队开始研究能将 Java 对象转换为 JSON 的 API,并最终选择了 JUnit 测试程序最简短的方案,我们的目标是在代
📄 Page 9
码有效的前提下,尽可能简化所需的工作。我们对完成后的应用程序 执行了严格的压力测试,而从 Java 转换为 JSON 的操作在测试中从未 成为性能瓶颈。最终,这一应用程序在生产环境中呈现出了很好的可 扩展性,用户也能瞬间看到下拉列表。 之后的一段时间里,我思考过在 Web 应用程序、RESTful API 和 消息系统中均使用 JSON。2009 年,因为 XML Schema 可以在数据交 换过程中提供语义校验,所以我仍旧在项目中使用 XML。当时我的技 术决策是这样的:在 Web 用户界面上使用 JSON(出于速度考虑), 在 Web Service 和消息系统中则使用 XML(出于数据集成考虑)。不 过,当 2010 年听说 JSON Schema 后,我就意识到自己已经不再需要 XML 了。JSON Schema 标准目前还在完善中,但已经足够成熟,足以 用于企业级应用程序中的数据集成任务。 时至今日,我已经习惯,或者更准确地说,迷上了 JSON。我开 始在网络上搜索 JSON 的其他功能,并发现了大量的 API、在线工 具、内容搜索功能等。简而言之,能够使用 XML 实现的功能都可以 (也应当)用 JSON 实现。 之后我开始搜索有关 JSON 的图书,却失望地发现只能在讲述 JavaScript 或者 RESTful Web Service 的书中,零星地找到一两章有关 JSON 的内容。JSON 社区欣欣向荣,拥有大量的支持工具、文章和博 客,但除了 Douglas Crockford 的 JSON 官方网站,尚没有一处地方对 这些知识和资源进行汇聚。 本书的目标读者 本书的目标读者是设计或实现 Web 和移动端应用程序、RESTful API 以及消息系统的架构师和开发人员。本书中的代码示例是用以下 编程语言编写的:JavaScript、Node.js、Ruby on Rails 和 Java。如果你使 用的是其他编程语言,如 Groovy、Go、Scala、Perl、Python、Clojure 或者 C#,同样需要阅读本书中的示例代码。不过你大可放心,绝大 多数主流的现代编程语言都可以提供优秀的 JSON 支持。对于架构 师,本书提供了指南、最佳实践以及架构和设计图表。然而,除了提
📄 Page 10
供技术愿景,真正的架构师往往会用实际代码来佐证自己的观点。虽 然我很喜欢编写代码来使用 JSON,但如果没有用例,缺少业务和技 术背景,那么一切都将毫无意义。对于开发人员,本书汇聚了代码示 例、工具、单元测试,等等。 为了保持简洁和专注,第 5~10 章仅提供在 Node.js 中编写的代码 示例。但是,将这些示例转换为你使用的编程语言的代码并不难。 “实战”的含义 2000 年年中,当我与 Scott Davis 合作编写 JBoss at Work 时,我们 的愿景是编写一本开发人员能在日常工作中使用的书。同样,本书的 目的也是为开发人员提供实用示例,这些示例是我根据实际的 JSON 使用经验所编写的。为此,我在每章后面添加了单元测试(如果这一 章的内容可以编写单元测试的话)。原因很简单:如果一段代码没有 对应的测试,则该段代码不存在。 准备好卷起袖子看代码吧。无论你是架构师还是开发人员,本书 都会对你的工作有所帮助。 本书内容 通过阅读本书并练习书中的示例,你将学到以下实战操作: JSON 基础知识,以及如何对 JSON 数据进行建模; 在 Node.js、Ruby on Rails 以及 Java 中使用 JSON; 使用 JSON Schema 结构化 JSON 文档来设计并测试 API; 使用 JSON 搜索工具来搜索 JSON 文档的内容; 使用 JSON 转换工具将 JSON 文档转换成其他数据格式; 将 JSON 作为企业级架构中的一部分来使用; 比较 HAL、json:api 等 JSON 超媒体格式; 使用 MongoDB 来存储和访问 JSON 文档; 使用 Apache Kafka 在服务间交换 JSON 消息; 使用免费的 JSON 工具来简化测试;
📄 Page 11
通过简单的工具和类库,使用自己偏好的编程语言来调用 API。 本书使用的工具 以下是本书中用到的 JSON 工具: JSON 编辑器 / 建模工具; 单元测试工具(如 Mocha/Chai、Minitest、JUnit); JSON 校验工具; JSON Schema 生成器; JSON 搜索工具; JSON 转换(模板)工具。 本书不适合哪些读者 如果对 JSON 的兴趣仅限于用 JavaScript 来发起 Ajax 调用,那么本 书并不适合你。虽然本书也涉及了 Ajax 调用,但这只是所有内容中的 冰山一角。有关 JavaScript 的很多图书中都包含有关 Ajax 调用的章 节。 本书不会包含 REST、Ruby on Rails、Java 和 JavaScript 等内容的深 入介绍。本书会用到上述技术,但将关注点放在了如何通过这些技术 来使用 JSON 上。 本书的架构 本书由以下几部分内容组成: 第一部分,JSON 概述与平台; 第二部分,JSON 生态系统; 第三部分,JSON 的企业级应用; 附录。 第一部分,JSON概述与平台
📄 Page 12
第 1 章 JSON 概述 这一章从概述 JSON 数据格式开始,描述使用 JSON 过程中 的最佳实践,并介绍本书中所使用的工具。 第 2 章 在 JavaScript 中使用 JSON 这一章展示了如何在 JavaScript、Node.js、Mocha/Chai 单元测 试中使用 JSON。 第 3 章 在 Ruby on Rails 中使用 JSON 这一章描述了如何在 Ruby 对象和 JSON 之间进行转换,以及 如何与 Rails 进行集成。 第 4 章 在 Java 中使用 JSON 这一章讲述了如何在 Java 和 Spring Boot 中使用 JSON。 第二部分,JSON生态系统 第 5 章 JSON Schema 这一章将帮助你用 JSON Schema 对 JSON 文档进行结构化操 作。同时,你还会学习如何生成 JSON Schema 并用其来设计 API。 第 6 章 在 JSON 中进行搜索 这一章展示了如何通过 jq 和 JSONPath 搜索 JSON 文档。 第 7 章 JSON 转换 这一章提供了工具,从而将设计糟糕的 JSON 文档转换为更 优雅、更有用的 JSON 文档。这一章还介绍了如何在 JSON 与 XML、HTML 等其他格式间进行相互转换。
📄 Page 13
第三部分,JSON的企业级应用 第 8 章 JSON 与超媒体 这一章介绍了如何在 JSON 中使用多种知名的超媒体格式, 如 HAL 和 jsonapi。 第 9 章 JSON 与 MongoDB 这一章展示了如何使用 MongoDB 来存储与处理 JSON 文 档。 第 10 章 用 Kafka 实现 JSON 消息系统 这一章描述了如何使用 Apache Kafka 在服务间交换 JSON 消 息。 附录 附录 A 介绍了如何安装运行本书示例所需的应用程序。 附录 B 提供了更多有关 JSON 社区(如标准、教程)的信息与链 接,有助于你深入学习 JSON。 代码示例 本书中的所有代码示例及网址链接均可在图灵社区本书页面免费 下载:http://www.ituring.com.cn/book/2093。 本书是要帮你完成工作的。一般来说,如果本书提供了示例代 码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代 码,否则无须联系我们获得许可。比如,用本书的几个代码片段写一 个程序就无须获得许可,销售或分发 O'Reilly 图书的示例光盘则需要 获得许可;引用本书中的示例代码回答问题无须获得许可,将书中大 量的代码放到你的产品文档中则需要获得许可。
📄 Page 14
我们很希望但并不强制要求你在引用本书内容时加上引用说明。 引用说明一般包括书名、作者、出版社和 ISBN。比如:“JSON at Work by Tom Marrs (O'Reilly). Copyright 2017 Vertical Slice, Inc., 978-1-449- 35832-7.” 如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎 你通过 permissions@oreilly.com 与我们联系。 O'Reilly Safari Safari(前身为 Safari Books Online,http://oreilly.com/safari)是一 个会员制的培训和参考平台,面向企业、政府、教育从业者和个人。 Safari 用户可访问 O'Reilly Media、Harvard Business Review、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、
📄 Page 15
Course Technology 等 250 多家出版社的上千种图书、培训视频、学习 路径、交互式教程和精选播放列表。 如需了解更多信息,请访问 http://oreilly.com/safari。 联系我们 请把对本书的评价和问题发给出版社。美国:   O'Reilly Media, Inc.   1005 Gravenstein Highway North   Sebastopol, CA 95472 中国:   北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室 (100035)   奥莱利技术咨询(北京)有限公司 O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关 信息,包括勘误表、示例代码以及其他信息。本书的网站地址是: http://shop.oreilly.com/product/0636920028482.do。 对于本书的评论和技术性问题,请发送电子邮件到: bookquestions@oreilly.com 要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访 问以下网站: http://www.oreilly.com 我们在 Facebook 的地址如下:http://facebook.com/oreilly
📄 Page 16
请关注我们的 Twitter 动态:http://twitter.com/oreillymedia 我们的 YouTube 视频地址如下: http://www.youtube.com/oreillymedia 致谢 首先,我要感谢创建并标准化 JSON 数据格式的 Douglas Crockford。JSON 是 REST 和微服务领域数据所用的语言,整个社区都 应该感谢 Crockford 的愿景与付出。 感谢 O'Reilly 本书的编辑 Megan Foley 和前任编辑 Simon St. Laurent,感谢他们对本书的信任,以及在本书出版过程中给予我的耐 心与指导。感谢他们一直支持我,并帮助我完成整个项目。还要感谢 这本书的文字编辑和制作编辑 Nick Adams 和 Sharon Wilkey,感谢他们 孜孜不倦地改进本书质量。 感谢 O'Reilly 开源大会的 Matthew McCullough 和 Rachel Roumeliotis,No Fluff Just Stuff(NFJS)大会的 Jay Zimmerman,以及 Great Indian Developer Summit(GIDS)大会的 Dilip Thomas,感谢他 们让我在会议上分享有关 JSON 和 REST 的内容。在会议上进行分享 非常有趣,希望未来还能有这样的机会。 感谢对本书提出宝贵反馈的技术审稿人:Joe McIntyre、David Bock、Greg Ostravich 和 Zettie Chinfong。此外,还要感谢以下人员, 他们帮助我梳理了讲述 JSON 的思路: Matthew McCullough、Scott Davis、Cristian Vyhmeister、Senthil Kumar、Sean Pettersen、John Gray、 Doug Clark、Will Daniels、Dan Carda 和 Peter Piper。 科罗拉多的技术社区是世界一流的,而我也有幸在以下用户组中 做过分享,这对改进本书材料不无帮助: HTML5 Denver Denver Open Source User Group(DOSUG)
📄 Page 17
Colorado Springs Open Source User Group(CS OSUG) Denver Java User Group(DJUG) Boulder Java User Group(BJUG) BoulderJS Meetup 感谢鼓励、信任和推动我出版本书的 Toastmasters 社区中的朋 友:Darryle Brown、Deborah Frauenfelder、Eli-nora Reynolds、Betty Funderburke、Tom Hobbs、Marcy Brock,以及其他很多很多人。他们 启发我要清晰地沟通、帮助同行、放开眼界。 互联网上的 JSON 社区非常棒。本书中的很多内容都是对社区优 秀工作成果的阐述。技术社区启发我将 JSON 知识点串连起来,并讲 述整个 JSON 技术图景。 感谢我已故的父母 Al Marrs 和 Dorene Marrs 一直以来对我的爱、 信任和支持,我知道你们已经在一个更美好的地方了。你们启发我学 会适应、创新并努力工作。你们总是鼓励我全力以赴。感谢你们为我 做的一切。 最后,感谢我美丽的妻子 Linda 和女儿 Abby——我爱你们。当我 将晚上和周末的时间用于写作和编程时,谢谢你们对我的耐心和理 解。
📄 Page 18
第一部分 JSON 概述与平台
📄 Page 19
第1章 JSON 概述 JSON 数据格式使得应用程序可以通过 RESTful API 等方式在网 络上进行数据通信。JSON 不局限于某项技术,本身非私有,且可移 植。对于产生(序列化)和读取(反序列化) JSON 数据,所有的现 代编程语言(Java、JavaScript、Ruby、C#、PHP、Python、Groovy 等)和平台都提供了良好的支持。JSON 非常简单,由对象、数组和名 称 - 值对这三种开发人员所熟悉的结构体所组成。除了表现层状态转 化(REpresentational State Transfer,REST),JSON 在以下环境 中也有所应用: Node.js(在 package.json 中存储项目元数据); MongoDB 等 NoSQL 数据库(详见第 9 章); Kafka 等消息平台(详见第 10 章)。 1.1 JSON是一项技术标准 早年间,REST 的反对者在批评 RESTful Web Service 时曾认为 它并不是标准,但与 HTTP 一样,JSON 确实是一项技术标准。无论是 互联网工程任务组(Internet Engineering Task Force,IETF),还 是 Ecma 国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association,ECMA),都已经认可这一点。JSON 由 Douglas Crockford 于 2001 年提出,并在 2006 年由 IETF 通过 RFC 4627 进行首次标准化。2013 年秋,Ecma 国际通过 ECMA 404 将 JSON 正式标准化。得到 Ecma 国际的承认后,Douglas Crockford 认 为 JSON 已经是一个正式的国际数据处理标准了。
📄 Page 20
2014 年 3 月,Tim Bray 发布了 RFC 7158 和 RFC 7159,以作 为 Douglas Crockford 原始标准的改进版。这两份文档修正了之前 RFC 4627 标准中的一些错误,并将其状态更改为“废弃”。 1.2 示例 在继续深入前,我们先查看 JSON 的一个小示例。例 1-1 展示了 一个简单的 JSON 文档。 例 1-1 firstValidObject.json { "thisIs": "My first JSON document" } 一个合法的 JSON 文档一般属于以下两种情况之一: 由大括号 { 和 } 括起来的一个对象; 由中括号 [ 和 ] 括起来的一个数组。 例 1-1 展示了一个包含单个名称 - 值对的对象,其中键 "thisIs" 的值为 "My first JSON document"。 为了证明这个 JSON 文档是合法的,我们使用 JSONLint 来校验 一下。将上述 JSON 文本粘贴到文本输入框中,然后点击 Validate 按钮,就会看到如图 1-1 所示的页面。
The above is a preview of the first 20 pages. Register to read the complete e-book.

💝 Support Author

0.00
Total Amount (¥)
0
Donation Count

Login to support the author

Login Now
Back to List