~/VibeHandbook
免费 PDF

04 · 03

JSON 是什么

当你的应用向 提一个问题时,答案会以一种叫 格式的文本回来。它之所以成了默认选择,是因为它既能被人读懂,容易被程序处理。你会不停地见到它,所以能读懂它很值得。

JSON 由键和值构成。键是一个带引号的标签;值是附在它上面的数据。下面是一个真实的例子,描述了一个用户:

{
  "id": 42,
  "name": "Ada Lovelace",
  "email": "[email protected]",
  "isAdmin": false,
  "loginCount": 137,
  "tags": ["beta", "early-access"],
  "profile": {
    "city": "London",
    "avatarUrl": null
  }
}

把它当成一张有人填好的表格来读。"name" 是一个字段,"Ada Lovelace" 是他们填进去的内容。两种结构完成了所有的工作:

  • 一个 object 用花括号 { } 包起来。它是一捆键/值对——就像一条记录。上面整个例子就是一个 object。
  • 一个 array 用方括号 [ ] 包起来。它是一个有序的值列表。在上面,"tags" 装着一个由两个 string 组成的 array。

注意 "profile" 是一个 object 里面的 object。JSON 是可以嵌套的——一个值本身可以是一个 object 或一个 array,想嵌多深就嵌多深。这就是为什么一个响应可以一次性描述一个用户、他们的地址、以及他们最近的十个订单。

把同一个用户 object 画成一棵树,它的形状就一目了然——平坦的字段在上面,一个列表和一个嵌套的 object 从中分出枝杈:

   { } user (对象)
   ├── id ............ 42             (数字)
   ├── name .......... "Ada Lovelace" (字符串)
   ├── isAdmin ....... false          (布尔值)
   ├── tags .......... [ ] (数组)
   │   ├── "beta"
   │   └── "early-access"
   └── profile ....... { } (对象)
       ├── city .......... "London"       (字符串)
       └── avatarUrl ..... null           (null = 无值)

想离线阅读?

免费下载整本书的 PDF 或 EPUB。