指南

什么是 JSON?通俗指南与示例

JSON(JavaScript Object Notation)是一种简单的文本格式,用于把结构化数据(例如一位客户、一份订单或一个商品列表)写成“名称与值”成对的形式。它便于人阅读,也便于程序生成和解析。当应用和服务通过网络交换数据时,JSON 是目前最常见的格式。

用 AI 构建时 JSON 为什么重要

即使你从不写代码,也会不断接触到 JSON:

  • API。 当你的应用界面从后端加载数据,或者后端调用支付、邮件或 AI 服务时,数据通常以 JSON 的形式传输。参见什么是 API。
  • 设置文件。 许多项目配置文件都是 JSON,例如 package.json,它列出了一个 JavaScript 项目的依赖。
  • 数据库。 Postgres 可以在某一列中存储 JSON(jsonb 类型),用于存放不适合整齐行列结构的数据。参见什么是 Postgres。
  • AI 输出。 当你希望 AI 模型返回程序可以直接使用的内容(例如一组标签,或提取出的发票字段)时,通常会要求它返回 JSON。
  • 错误信息与日志。 许多错误以 JSON 的形式返回,阅读它往往是找出问题所在最快的方法。

能读懂 JSON,你就能检查应用实际收到了什么,发现缺失的字段,并能向 AI 构建器精确地描述问题。

一个日常类比

想象一张纸质表格:姓名:,电话:,订阅新闻:☐ 是 ☐ 否。每一项都是一个标签加上它旁边的值。JSON 就是这种表格的文本形式,采用严格的格式,计算机无需猜测即可读取。同样,JSON 也可以有嵌套的部分(例如包含街道、城市和邮编的地址块),以及列表(例如多个电话号码)。

JSON 长什么样

下面是一条预约记录的 JSON 形式:

{
  "id": 5001,
  "customer": "Lena Park",
  "service": "Haircut",
  "startsAt": "2026-10-03T14:00:00Z",
  "price": 35.5,
  "paid": false,
  "notes": null,
  "extras": ["beard trim", "hot towel"],
  "contact": {
    "email": "lena@example.com",
    "phone": "+44 20 7946 0000"
  }
}

阅读方式如下:

  • 花括号 { } 包裹一个对象,即一组名称与值的配对。
  • 每一对的形式是 "名称": 值,各对之间用逗号分隔。
  • 方括号 [ ] 包裹一个数组,即有序列表。
  • 对象和数组可以相互嵌套,就像 contact 和 extras 那样。

六种值类型

JSON 只有六种值类型。这一小组类型也是它能够处处通用的重要原因。

类型示例说明
字符串(文本)"Lena Park"始终使用双引号
数字35.5、-2、1e6不加引号;不带货币符号
布尔值true、false小写,不加引号
空值null表示“没有值”
对象{ "city": "Leeds" }命名的值
数组[1, 2, 3]有序列表;项可以是任意类型

JSON 没有日期类型。日期通常以字符串形式书写,一般采用上文所示的 ISO 8601 格式(2026-10-03T14:00:00Z,其中 Z 表示 UTC)。约定统一的格式可以避免一整类时区错误。

严格的规则(错误的来源)

JSON 比看上去更严格。以下都是无效的:

{ name: "Lena" }            ← key without double quotes
{ 'name': 'Lena' }          ← single quotes
{ "a": 1, "b": 2, }         ← trailing comma
{ "a": 1 "b": 2 }           ← missing comma
{ "a": 1 // comment }       ← comments aren't allowed

你遇到的大多数“Unexpected token”(意外的标记)错误都属于这些情况之一。JSON 校验或格式化工具会准确指出出错的行。

实例:JSON 在应用中的流转

一位客户在美发应用中预约了一次理发。下面是 JSON 出现的位置:

  1. 预约表单向应用的后端发送以下内容:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
  1. 后端把预约保存到数据库中,并以状态码 201 Created 回复以下内容:
{ "id": 5001, "status": "confirmed" }
  1. 如果该时段已被预约,它则可能改为以状态码 409 Conflict 回复:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }

页面读取 status 或 error,并显示相应的消息。如果页面显示的是空白屏幕,打开浏览器的开发者工具(Network 标签页)就能看到这些 JSON,这往往是找出问题最快的线索。

关键术语

术语含义
键(Key)名称与值配对中的名称,例如 "email"。
解析(Parse)把 JSON 文本转换为程序可以使用的数据。
序列化 / 字符串化(Serialize / stringify)把数据转换为 JSON 文本,以便发送或存储。
载荷(Payload)请求或响应中发送的数据。
模式(Schema)对数据应有结构的描述,包括有哪些字段、各是什么类型。JSON Schema 是编写它的一种标准方式。
JSONBPostgres 的二进制 JSON 列类型,可以建立索引并进行查询。
NDJSON / JSON Lines每行一个 JSON 对象,常见于日志和流式数据。

常见误解

  • “JSON 就是 JavaScript。” 它的语法源自 JavaScript,但它与语言无关;Python、Java、C#、Go 等都能读取它。
  • “加引号的数字也没问题。” "35" 是字符串,不是数字。把两者混用会导致错误,例如 "35" + "5" 会变成 "355"。金额通常更适合以整数分(3550)的形式存储,以避免舍入问题。
  • “JSON 是安全的,因为它只是数据。” JSON 可以承载任何内容,包括密钥。不要把 API 密钥放进发送到浏览器的 JSON 中。
  • “把所有内容都放进 JSON 列。” 这对灵活的附加信息很方便,但你需要搜索、过滤或关联的数据,通常应当放在正式的列中。
  • “AI 总会返回有效的 JSON。” 模型可能会添加多余的文字,或破坏格式。许多服务商提供结构化输出模式;但你的代码仍然应当检查返回的内容。

向 AI 构建器提出的请求

  • “给我看看这个端点返回的 JSON 示例。”
  • “用带有 error 代码和易读 message 的 JSON 返回错误。”
  • “以 UTC 格式的 ISO 8601 字符串存储日期,只在屏幕上转换为本地时间。”
  • “以整数分的形式存储价格。”
  • “在服务器端校验传入的 JSON,拒绝缺少字段或字段类型错误的请求。”
  • “调用 AI 模型时,要求它按这种确切的结构返回 JSON,并在使用前进行检查。”

Mythex 中的 JSON

你无需在 Mythex 中手写 JSON——只需描述你想要的内容,智能体就会编写收发 JSON 的代码。不过,认识 JSON 仍然有帮助:出问题时,把 JSON 错误粘贴到聊天中,就能给智能体一个精确的线索。文档中的 REST API 后端配方 从一开始就要求提供“清晰的 JSON 错误”,而 集成任意 API 配方则讲解如何调用外部服务。要了解更宏观的内容,参见REST 与 GraphQL和如何调试 AI 构建的应用。

常见问题

用简单的话说,什么是 JSON?

JSON(JavaScript Object Notation)是一种纯文本格式,用于以“名称和值”的形式记录结构化数据,例如 "name": "Lena"。几乎所有网络 API 都用它来收发数据,许多应用也用它保存设置和存储的数据。

JSON 是一种编程语言吗?

不是。JSON 是一种数据格式,而不是语言。它本身无法执行任何操作,只能描述数据。虽然它源自 JavaScript,但几乎所有编程语言都能读写它。

JSON 和 JavaScript 对象有什么区别?

两者看起来很像,但 JSON 的规则更严格。在 JSON 中,每个键都必须用双引号括起来,字符串使用双引号,不允许注释和末尾逗号,值仅限于字符串、数字、true、false、null、对象和数组。

为什么我的 JSON 显示无效?

常见原因包括:最后一项后面有末尾逗号,使用了单引号而不是双引号,项与项之间缺少逗号,括号没有闭合,或者出现了注释。把它粘贴到 JSON 校验工具中,工具会指出具体的行。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)