JSON 学习目录
知识库简介
JSON(JavaScript Object Notation)是一种文本数据交换格式。API 请求与响应、配置文件、LLM 结构化输出、Tool Calling 参数、MCP 消息和 Agent 状态经常使用它。会辨认大括号只是起点:工程系统还必须处理 UTF-8、重复键、数值范围、解析资源上限、Schema 方言、版本迁移、错误脱敏,以及“结构正确但动作未获授权”的边界。
本库采用三个逐层收紧的视角:
- JSON 语法回答“这段文本能否表示一个值”;
- 数据契约回答“这个值是否符合调用双方约定”;
- 业务与授权回答“这个值是否真实、可用,并允许触发动作”。
综合项目只处理本地教学数据,不访问网络、不使用密钥,也不会执行任何工具。它先用 Python 严格解析,再用 Draft 2020-12 Schema 验证,最后由可信代码判定工具建议是“仅验证”还是“需要审批”。
在总路线中的位置
本库位于 AI Agent Engineer 总路线 的“工程与数学基础”知识域,并进入四条角色路径。它先建立请求体、响应体与配置的数据表示和契约;随后可进入 API,再按需要学习 Markdown,并逐步进入 LLM、Tool Calling 与 MCP。
学习目标
- 写出并判断六类 JSON 值,区分 JSON 文本、Python 对象与“装着 JSON 的字符串”。
- 使用
load/loads/dump/dumps,正确处理 UTF-8、中文、错误行列号和序列化策略。 - 解释 Python 默认
json与 RFC 8259 严格互操作边界,并拒绝重复键、非有限数字、孤立 surrogate 和超限输入。 - 区分单个 JSON 文档、JSON Lines、NDJSON 与 RFC 7464 JSON Text Sequences。
- 使用 Draft 2020-12 的核心关键字,理解
$schema、$defs/$ref、组合、条件、default和format的真实语义。 - 为 Agent 配置与工具参数设计版本化契约、稳定错误路径和脱敏报告。
- 说明结构化输出为何仍不能证明事实、权限、审批或工具执行成功。
- 在普通与
python -O模式下运行独立测试,验证失败路径而不是依赖裸assert。
前置知识
- 建议先完成 Python基础 中的字符串、字典、列表、异常、文件与虚拟环境。
- 数据结构基础 有助于理解对象、数组和遍历成本。
- 会在 Windows 11 + PowerShell 7 中运行
python;不需要 JavaScript、Web 服务或真实 API。
推荐学习顺序
- 语法与数据模型:从一个 JSON 文本走到六类值、空值语义与合法性判断。
- Python 解析、序列化与严格模式:掌握标准库,并认识默认行为并不等于严格 RFC profile。
- 互操作性、Unicode 与数字边界:处理重复键、对象顺序、Unicode、数值精度和 canonicalization。
- 文件、JSON Lines 与流式处理:安全读写文件、逐行处理记录并理解原子替换的能力边界。
- JSON Schema 基础契约:用 Draft 2020-12 表达对象、数组、必填、范围与未知字段策略。
- Schema 设计、版本与错误定位:学习复用、组合、条件、版本迁移与 RFC 6901 错误路径。
- API、LLM 与工具调用中的 JSON:把格式、Schema、事实、授权和执行结果分层。
- 实战:可靠 Agent 配置与事件管道:运行真实 Schema、严格 JSONL 管线、审批分流与脱敏报告。
- 练习、自测与掌握标准:完成故障修复、Schema 设计和项目扩展,再用清单验收。
动手实践入口
项目位于 examples/:
| 文件 | 用途 |
|---|---|
strict_json.py | UTF-8 严格解析、唯一键、有限数字、资源限制、JSONL 与原子替换。 |
agent_config.schema.json | Draft 2020-12 Agent 配置契约。 |
validate_agent_config.py | 依次执行语法、Schema 和业务不变量验证。 |
tool_call.schema.json | 两类本地工具建议的联合 Schema。 |
tool_calls.jsonl | 只读搜索与需审批写操作的虚构记录。 |
validate_tool_calls.py | 生成脱敏状态;不会动态分派或执行工具。 |
demo.py | 在临时目录中完成读、验、原子写、读回闭环。 |
test_*.py | 普通与 -O 模式均有效的 unittest。 |
先看 项目说明,不要直接复制复杂 helper 而跳过前七节的契约推导。
掌握标准
- 能不运行代码判断常见 JSON 语法错误,并解释顶层标量为何合法。
- 能区分字段缺失、字段为
null、空字符串和空数组的业务含义。 - 能写出 UTF-8 读写代码,并解释
ensure_ascii=False、allow_nan=False和双重编码。 - 能证明 Python 默认解析器会接受哪些非标准扩展,并按契约收紧。
- 能为重复键、超大输入、深层嵌套、JSONL 损坏行设计失败测试。
- 能读懂并修改 Draft 2020-12 Schema,知道验证器支持的方言与子集必须核对。
- 能用 JSON Pointer 定位错误,同时不把完整载荷或敏感值写入日志。
- 能说明 Schema 通过后仍需业务校验、可信工具注册表、授权、审批、幂等和结果确认。
- 能运行项目及全部测试,并独立增加一个字段、一个失败样例和一条迁移规则。
与其他知识库的关系
| 知识库 | 边界与连接点 |
|---|---|
| Python基础 | 提供字符串、容器、异常、文件和测试;本库只聚焦 JSON 契约。 |
| API | 解释 HTTP 方法、媒体类型、超时和重试;本库解释 payload 结构与验证。 |
| LLM API集成 | 厂商端点、SDK 字段和响应生命周期会变化,放在该库核对。 |
| Tool Calling(含 Function Calling) | Schema 约束参数形状;工具选择、执行循环和副作用控制在该库展开。 |
| MCP | MCP 使用 JSON-RPC 与 JSON Schema;协议版本和生命周期在 MCP 库学习。 |
| Agent 核心 | Agent 状态可序列化为 JSON,但记忆、规划和控制循环不等于数据格式。 |
| 工作流自动化 | JSON 可承载步骤输入输出;并发、事务、补偿和恢复需要工作流层设计。 |
本轮验收记录
验收日期:2026-07-22。
- 结构:10 篇 Markdown(1 个目录 + 9 节课程),
examples/11 个文件,总计 21 个文件;无公开完整复刻材料。 - 导航:44 个内部 wikilink 均使用完整限定路径;短路径 0、断链 0、旧课程路径残留 0。
- 文档代码:16 个 Python fenced block 通过 AST 解析,28 个 JSON fenced block 均可解析。
- 项目文件:6 个 Python 文件通过 AST;3 个单文档 JSON/Schema 通过
python -m json.tool;JSONL 样例逐行可解析。 - 运行:普通模式与
python -O模式各 42 项unittest全部通过,并把ResourceWarning视为错误。 - 闭环:
demo.py实际得到 1 条validated_not_executed、1 条approval_required,未执行工具,临时报告自动清理。 - 边界:读写 exact-limit/limit+1、LF/CRLF/EOF、重复键、非有限数字、Unicode、资源上限、原子替换失败和报告脱敏均有测试。
- 卫生:无
.venv、缓存、模型文件、大文件、真实凭据或持久生成报告;git diff --check通过。 - 审查:内容结构、动态事实/来源、代码/安全三项独立只读复审均为 PASS。
Obsidian Reading View 未在本轮自动化环境中人工打开;已完成 frontmatter、Markdown 结构、wikilink 目标和代码块静态验证。
主要参考资料
资料复核日期:2026-07-22。
- RFC 8259:The JavaScript Object Notation Data Interchange Format
- ECMA-404:The JSON Data Interchange Syntax
- Python 3.14
json官方文档 - JSON Schema Specification
- JSON Schema Draft 2020-12
jsonschema4.26.0 官方文档- RFC 7464:JSON Text Sequences
- RFC 8785:JSON Canonicalization Scheme
截至复核日,JSON Schema 官方站仍将 Draft 2020-12 作为当前正式发布方言;本机项目实际使用 Python 3.11.9 与 jsonschema 4.26.0。厂商结构化输出只支持完整规范的某个 profile 或子集时,应以该厂商当日官方文档为准,不能把实现限制写成通用 JSON Schema 规则。