談到 JSON,你的第一反應是什麼?聽說 JSON 也能出本書?費解!

沒錯,如果你 Google 搜索 JSON,你會發現 JSON 的官網,http://json.org/。官網上明確說明 JSON 是一種數據格式。不過基於這種格式它可以衍生出不少相關操作和工具:序列化/反序列化、搜索、轉換、Schema、超媒體等。

所以,不懂的小夥伴還真要認真看看。圖靈之前有出版過一本 JSON 入門書——《JSON必知必會》,這本書雖然只有 128 頁,但是卻包含了絕大部分你要知道的 JSON 知識,深受讀者喜愛。

爲了讓大家在入門後能將所學用於實戰,我們今天就爲大家介紹一本新書《JSON實戰》,這本是 Web 開發架構師指南,也是 JSON 實戰寶典。

聽說JSON也能出本書?

JSON at Work: Practical Data Integration for the Web

作者:湯姆•馬爾斯

譯者:邵釧

JSON 已經成爲 RESTful 接口設計的事實標準,並在互聯網數據交換領域日益受親睞,是搭建優雅、高效應用程序的得力工具。

  • JSON 實戰指南
  • 全面掌握 JSON 強大功能的不二之選

本書來自於作者實際使用 JSON 的經驗所得,主要內容包括 JSON 基礎知識,對 JSON 數據建模,在Node.js、Ruby on Rails 和Java中使用JSON,結構化 JSON 文檔並設計測試 API,搜索 JSON 文檔的內容,將JSON文檔轉換成其他數據格式,將 JSON 作爲企業級架構中的一部分來使用,等等。

什麼是JSON?

在深入討論 JSON 之前,先讓我們對它有一個感性的認識。宏觀上看,JSON 是一種輕量的數據格式,在各種地方傳遞數據。如果單用眼睛看,JSON 裏的數據是被保存在花括號({})中的,而如果從用途上進一步分析,最終我們會得出結論: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 數據庫;
  • Kafka 等消息平臺。

爲什麼使用JSON?

Ecma 國際和 IETF 所做的標準化工作幫助 JSON 獲得了行業認可,但使 JSON 廣爲流行的卻是其他一些因素:

  • 基於 JSON 的 RESTful API 的爆發式增長;
  • JSON 基本數據結構的簡潔性;
  • JavaScript 日漸流行。

JavaScript 的復興推動了JSON 的流行。在過去幾年中,我們見證了 JavaScript 作爲一門頂級編程語言的崛起。JavaScript 生態系統既包含了 Node.js 這樣的平臺,也包含了 AngularJS、React、Backbone 和 Ember 這樣的模型 / 視圖 / 控制器(Mode/View/Controller,MVC)框架。有關 JavaScript 對象和模式最佳實踐的圖書和網站也層出不窮。按照 Douglas Crockford 的說法,JSON 是 JavaScript 對象字面量表示法的一個子集,因此可以無縫地與 JavaScript 開發融爲一體。

數以千計的 RESTful API 使用了 JSON。以下是基於 JSON 的一些流行的 RESTful API:

  • LinkedIn
  • Twitter
  • Facebook
  • Salesforce
  • GitHub
  • DropBox
  • Tumblr
  • Amazon Web Services(AWS)

如果想要查看這幾千個基於 JSON 的 RESTful API,可以訪問 ProgrammableWeb,搜索關鍵詞 REST 和 JSON,然後花上好幾周來查閱結果。

JSON 非常簡潔,並且正在逐步替代 XML 成爲互聯網上主要的數據交換格式。它易於閱讀,相關結構也很容易與軟件開發人員所熟悉的概念對應起來,如數組、對象和名稱 - 值對。我們不用再撓頭苦思某個東西應當是元素還是屬性,也不用再就這一點與人爭論不休。與 XML 相比,對象及其數據成員這一組合更適合面向對象的設計和開發。由於節省了每個數據元素的開始標籤與結束標籤,JSON 格式的額外開銷更少、更爲緊湊,所以 JSON 格式的文檔一般比內容相同的 XML 文檔小。從企業級應用的角度來看,與 XML 相比,JSON 文檔在網絡上的傳輸與處理更快,因此效率更高。

雖然 Douglas Crockford 在提出 JSON 時將其設計爲一種數據交換格式(通常用於 REST),但如今 JSON 在配置文件領域也佔有一席之地,如 Node.js 和 Sublime Text 等廣泛使用的產品。Node.js 使用 package.json 文件來定義其標準的 npm 包結構。Sublime Text 則是 Web 開發社區中流行的一款 IDE,它使用 JSON 來配置外觀及包管理器。

你會從書中學到什麼?

閱讀本書後,你會掌握的 10 項操作

  • 在 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 工具來簡化測試;
  • 通過簡單的工具和類庫,使用自己偏好的編程語言來調用 API。

作譯者簡介

湯姆•馬爾斯(Tom Marrs),擁有多年企業架構經驗,領導過各種企業級的API、Web、移動端、雲和 SOA 項目。目前任 TEKsystems 全球服務部門企業架構師,促使公司採用了包括 REST、微服務和 JSON 在內的多項 API 架構與技術。Tom 還是敏捷開發的擁躉,並獲得 Scrum 聯盟的 CSM 認證。

邵釧,畢業於浙江大學生物科學系,熱衷於提升產品的用戶體驗,在 UI 技術領域歷經 Java Swing、Adobe Flex,終至 Web 前端。目前主要感興趣的領域爲物聯網,並致力於相關產品 Uniboard 的設計開發。

內容概述

第一部分,JSON概述與平臺

  • 第 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 等其他格式間進行相互轉換。

第三部分,JSON的企業級應用

  • 第 8 章 JSON 與超媒體

這一章介紹瞭如何在 JSON 中使用多種知名的超媒體格式,如 HAL 和 jsonapi。

  • 第 9 章 JSON 與 MongoDB

這一章展示瞭如何使用 MongoDB 來存儲與處理 JSON 文檔。

  • 第 10 章 用 Kafka 實現 JSON 消息系統

這一章描述瞭如何使用 Apache Kafka 在服務間交換 JSON 消息。

相關文章