微信扫码下载

编辑推荐

JSON已经成为RESTful接口设计的事实标准,并在互联网数据交换领域日益受亲睐,是搭建优雅、高效应用程序的得力工具。
JSON实战》系统展示如何使用JSON工具和消息/文档设计来搭建企业级应用程序与服务,既包括JSON基础知识,又涵盖大量操作实践与使用案例,是全面掌握JSON强大功能的明智之选。
·熟悉JSON基础知识并学习如何对JSON数据进行建模
·学习如何在Node.js、RubyonRails以及Java中使用JSON
·使用JSONSchema构建JSON文档来设计并测试API
·使用JSON搜索工具来搜索JSON文档的内容
·使用JSON转换工具将JSON文档转换成其他数据格式
·比较HAL和jsonapi等JSON超媒体格式
·使用MongoDB来存储和处理JSON文档
·使用ApacheKafka在服务间交换JSON消息

内容简介

JSON实战》来自于作者实际使用JSON的经验所得,主要内容包括JSON基础知识,对JSON数据建模,在Node.js、RubyonRails和Java中使用JSON,结构化JSON文档并设计测试API,搜索JSON文档的内容,将JSON文档转换成其他数据格式,将JSON作为企业级架构中的一部分来使用,等等。
JSON实战》适合对Web和移动端应用、RESTfulAPI以及消息系统进行设计或实现的架构师和开发人员阅读。

作者简介

汤姆·马尔斯(TomMarrs),拥有多年企业架构经验,领导过各种企业级的API、Web、移动端、云和SOA项目。目前任TEKsystems全球服务部门企业架构师,促使公司采用了包括REST、微服务和JSON在内的多项API架构与技术。Tom还是敏捷开发的拥趸,并获得Scrum联盟的CSM认证。


译者简介

邵钏,毕业于浙江大学生物科学系,热衷于提升产品的用户体验,在UI技术领域历经JavaSwing、AdobeFlex,终zhiWeb前端。目前主要感兴趣的领域为物联网,并致力于相关产品Uniboard的设计开发。

目录

前言xv
第 1章JSON概述 3
1.1 JSON是一项技术标准 3
1.2 示例 4
1.3 为什么使用JSON 5
1.4 JSON的核心概念 6
1.4.1 JSON数据类型 7
1.4.2 JSON值类型 9
1.4.3 JSON的版本 11
1.4.4 JSON中的注释 12
1.4.5 JSON文件及MIME类型 12
1.4.6 JSON编码规范 12
1.5 《JSON实战》示例:MyConference 14
1.5.1 《JSON实战》技术栈 14
1.5.2 《JSON实战》架构风格:noBackend 14
1.5.3 用JSONEditorOnline对JSON数据进行建模 15
1.5.4 用JSONGenerator生成示例数据 16
1.5.5 创建并部署模拟API 16
1.6 本章回顾 19
1.7 内容预告 19
第 2章在JavaScript中使用JSON 20
2.1 安装Node.js 20
2.2 用JSON.stringify()和JSON.parse()进行序列化/反序列化操作 21
2.2.1 用于stringify/parse操作的“JSON”对象 21
2.2.2 JavaScript中简单数据类型的JSON序列化操作 21
2.2.3 使用toJSON()进行对象的序列化操作 23
2.2.4 使用eval()进行JSON的反序列化操作 24
2.2.5 使用JSON.parse()进行JSON的反序列化操作 25
2.3 JavaScript对象和JSON 26
2.3.1 NodeREPL 26
2.3.2 有关JavaScript对象的更多学习资料 28
2.4 用模拟API进行单元测试 28
2.4.1 单元测试风格——TDD和BDD 28
2.4.2 使用Mocha和Chai即可完成单元测试 29
2.4.3 设置单元测试环境 29
2.4.4 Unirest 29
2.4.5 测试数据 30
2.4.6 对演讲者数据进行单元测试 30
2.5 搭建小型Web应用程序 31
2.5.1 Yeoman 32
2.5.2 第1阶段:使用Yeoman生成Web应用程序 33
2.5.3 第2阶段:使用jQuery发起HTTP请求 36
2.5.4 第3阶段:在模板中使用模拟API所提供的演讲者数据 40
2.6 如何继续深入学习JavaScript 44
2.7 本章回顾 45
2.8 内容预告 45
第 3章在RubyonRails中使用JSON 46
3.1 安装RubyonRails 46
3.2 Ruby中与JSON有关的gem包 46
3.3 用MultiJson进行序列化/反序列化操作 47
3.3.1 MultiJson对象 47
3.3.2 Ruby中简单数据类型的JSON序列化/反序列化操作 48
3.3.3 用MultiJson进行JSON反序列化操作 50
3.3.4 关于JSON和驼峰式命名 52
3.3.5 用ActiveSupport进行JSON序列化操作 52
3.3.6 用ActiveSupport进行JSON反序列化操作 53
3.4 用模拟API进行单元测试 54
3.4.1 使用Minitest即可完成单元测试 54
3.4.2 设置单元测试环境 55
3.4.3 测试数据 55
3.4.4 用Minitest测试API所提供的JSON 55
3.4.5 对演讲者数据的单元测试 55
3.4.6 有关Ruby和Minitest的更多学习资料 59
3.4.7 似乎少了点什么 59
3.5 用RubyonRails搭建小型WebAPI 59
3.5.1 选择JSON序列化工具 60
3.5.2 speakers-api-1——创建API以提供驼峰式命名风格的JSON 61
3.5.3 speakers-api-2——创建API以提供自定义风格的JSON 67
3.5.4 有关Rails和RailsAPI的更多学习资料 68
3.6 本章回顾 69
3.7 内容预告 69
第 4章在Java中使用JSON 70
4.1 安装Java和Gradle 70
4.2 Gradle概览 70
4.3 使用JUnit即可完成单元测试 72
4.4 Java中的JSON类库 72
4.5 用Jackson进行JSON序列化/反序列化操作 73
4.5.1 对Java中的简单数据类型进行序列化/反序列化操作 73
4.5.2 对Java对象进行序列化/反序列化操作 75
4.6 用模拟API进行单元测试 79
4.6.1 测试数据 79
4.6.2 用JUnit对API提供的JSON进行测试 80
4.7 用SpringBoot搭建小型WebAPI 83
4.7.1 创建模型 84
4.7.2 创建控制器 85
4.7.3 注册应用程序 87
4.7.4 编写构建脚本 87
4.7.5 部署API 89
4.7.6 用Postman测试API 89
4.8 本章回顾 90
4.9 内容预告 90
D二部分 JSON生态系统
第 5章JSONSchema 93
5.1 JSONSchema概览 93
5.1.1 JSONSchema是什么 93
5.1.2 语法校验与语义校验 94
5.1.3 简单示例 94
5.1.4 Web上的JSONSchema资源 95
5.1.5 为什么使用JSONSchema 96
5.1.6 我在JSONSchema上的经历 97
5.1.7 JSONSchema标准的现状 97
5.1.8 JSONSchema与XMLSchema 97
5.2 JSONSchema核心——基础知识与工具 97
5.2.1 JSONSchema工作流与工具 97
5.2.2 核心关键词 100
5.2.3 基础类型 100
5.2.4 数值 103
5.2.5 数组 104
5.2.6 枚举值 106
5.2.7 对象 107
5.2.8 模式属性 108
5.2.9 正则表达式 110
5.2.10 依赖属性 111
5.2.11 内部引用 113
5.2.12 外部引用 114
5.2.13 选择校验规则 117
5.3 如何使用JSONSchema设计和测试API 121
5.3.1 应用场景 121
5.3.2 JSON文档建模 121
5.3.3 生成JSONSchema 122
5.3.4 校验JSON文档 125
5.3.5 生成示例数据 126
5.3.6 用json-server部署模拟API 129
5.3.7 关于用JSONSchema设计和测试API的一些思考 130
5.4 使用JSONSchema类库进行校验 130
5.5 如何继续深入学习JSONSchema 131
5.6 本章回顾 131
5.7 内容预告 131
第 6章在JSON中进行搜索 132
6.1 为什么要在JSON中进行搜索 132
6.2 JSON搜索类库和工具 132
6.2.1 其他you秀工具 133
6.2.2 选择工具的标准 133
6.3 测试数据 134
6.4 设置单元测试环境 135
6.5 比较JSON搜索类库和工具 136
6.5.1 JSONPath 136
6.5.2 JSONPointer 141
6.5.3 jq 145
6.6 搜索工具评估——总结概要 154
6.7 本章回顾 155
6.8 内容预告 155
第 7章JSON转换 156
7.1 JSON转换类型 156
7.2 选择JSON转换类库的标准 157
7.3 测试输入数据 157
7.4 将JSON转换为HTML 159
7.4.1 目标HTML文档 159
7.4.2 Mustache 160
7.4.3 Handlebars 165
7.4.4 转换工具评估——总结概要 170
7.5 JSON格式转换 170
7.5.1 存在的问题 170
7.5.2 JSON格式转换类库 170
7.5.3 其他you秀工具 171
7.5.4 目标JSON输出 171
7.5.5 JSONPatch 172
7.5.6 JSON-T 177
7.5.7 Mustache 180
7.5.8 Handlebars 182
7.5.9 转换工具评估——总结概要 184
7.6 JSON与XML的相互转换 185
7.6.1 传统转换工具 185
7.6.2 传统转换工具所面对的问题 193
7.6.3 XML-JSON相互转换——总结概要 193
7.6.4 JSON-XML相互转换——单元测试 194
7.7 本章回顾 196
7.8 内容预告 196
第三部分 JSON的企业级应用
第 8章JSON与超媒体 199
8.1 超媒体格式对比 200
8.1.1 定义关键词 201
8.1.2 关于超媒体的个人看法 201
8.1.3 Siren 202
8.1.4 JSON-LD 203
8.1.5 Collection+JSON 207
8.1.6 json:api 208
8.1.7 HAL 211
8.2 结论 215
8.3 建议 216
8.4 实际中遇到的问题 217
8.5 在演讲者数据API中用HAL进行测试 217
8.5.1 测试数据 217
8.5.2 HAL单元测试 219
8.6 在服务器端使用HAL 222
8.7 深入学习超媒体 223
8.8 本章回顾 223
8.9 内容预告 223
第 9章JSON与MongoDB 224
9.1 关于BSON 224
9.2 安装MongoDB 225
9.3 MongoDB服务器及相关工具 225
9.4 MongoDB服务器 225
9.5 将JSON导入MongoDB 226
9.6 MongoDB命令行 228
9.7 从MongoDB中导出JSON文档 231
9.8 关于Schema 233
9.9 用MongoDB进行RESTfulAPI测试 234
9.9.1 测试输入数据 235
9.9.2 对MongoDB进行RESTful封装 235
9.10 本章回顾 237
9.11 内容预告 238
第 10章用Kafka实现JSON消息系统 239
10.1 Kafka的用例 239
10.2 Kafka中的概念和专有名词 240
10.3 Kafka生态系统——相关项目 241
10.4 配置Kafka环境 241
10.5 Kafka命令行界面 242
10.5.1 如何用命令行界面发布JSON消息 242
10.5.2 启动ZooKeeper 243
10.5.3 启动Kafka 243
10.5.4 创建主题 243
10.5.5 列举主题 244
10.5.6 启动消费者程序 244
10.5.7 发布JSON消息 245
10.5.8 使用JSON消息 245
10.5.9 清理并关闭Kafka 246
10.6 Kafka的类库 247
10.7 端到端示例——MyConference中的演讲者提案 247
10.7.1 测试数据 247
10.7.2 架构中的组件 249
10.7.3 配置Kafka环境 250
10.7.4 配置模拟的电子邮件服务器及客户端——MailCatcher 251
10.7.5 配置Node.js项目环境 251
10.7.6 演讲提案生成程序(用于发送演讲提案) 252
10.7.7 提案审核程序(消息的消费者和生产者) 252
10.7.8 演讲者提醒程序(消息的消费者) 257
10.7.9 用MailCatcher实现审核结果的电子邮件提醒功能 260
10.8 本章回顾 262
附录 A安装指南 263
附录 BJSON社区 277
关于作者 278
关于封面 278

其他推荐