第一部分 JSON概述与平台 3
第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 本书示例:MyConference 14
1.5.1 本书技术栈 14
1.5.2 本书架构风格:noBackend 14
1.5.3 用JSON Editor Online对JSON数据进行建模 15
1.5.4 用JSON Generator生成示例数据 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 Node REPL 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章 在Ruby on Rails中使用JSON 46
3.1 安装Ruby on Rails 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 用Ruby on Rails搭建小型Web API 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和Rails API的更多学习资料 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 用Spring Boot搭建小型Web API 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
第二部分 JSON生态系统 93
第5章 JSON Schema 93
5.1 JSON Schema概览 93
5.1.1 JSON Schema是什么 93
5.1.2 语法校验与语义校验 94
5.1.3 简单示例 94
5.1.4 Web上的 JSON Schema资源 95
5.1.5 为什么使用JSON Schema 96
5.1.6 我在 JSON Schema上的经历 97
5.1.7 JSON Schema标准的现状 97
5.1.8 JSON Schema与XML Schema 97
5.2 JSON Schema核心——基础知识与工具 97
5.2.1 JSON Schema工作流与工具 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 如何使用JSON Schema设计和测试API 121
5.3.1 应用场景 121
5.3.2 JSON文档建模 121
5.3.3 生成JSON Schema 122
5.3.4 校验JSON文档 125
5.3.5 生成示例数据 126
5.3.6 用json-server部署模拟API 129
5.3.7 关于用JSON Schema设计和测试API的一些思考 130
5.4 使用JSON Schema类库进行校验 130
5.5 如何继续深入学习JSON Schema 131
5.6 本章回顾 131
5.7 内容预告 131
第6章 在JSON中进行搜索 132
6.1 为什么要在JSON中进行搜索 132
6.2 JSON搜索类库和工具 132
6.2.1 其他优秀工具 133
6.2.2 选择工具的标准 133
6.3 测试数据 134
6.4 设置单元测试环境 135
6.5 比较JSON搜索类库和工具 136
6.5.1 JSONPath 136
6.5.2 JSON Pointer 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 其他优秀工具 171
7.5.4 目标JSON输出 171
7.5.5 JSON Patch 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的企业级应用 199
第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进行RESTful API测试 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
附录B JSON社区 277
关于作者 278
关于封面 278