第 10 课

解析:从文本到程序中的值

解析器如何构建内存结构,以及代码运行前可能失败的原因。

解析指把 JSON 文本变成程序可用的内存值——对象、数组、字符串与数字。各语言都有库或内置能力,API 名称不同,概念一致。

解析的结果

输入文本:

{"id": 7, "tags": ["api", "draft"]}

解析成功后,运行时得到可索引的结构:id 为数字,tags 为字符串列表。完成解析前,文本只是字符串,不能当结构化数据使用。

常见失败模式

问题表现
语法错误解析器报错并给出位置
无效 UTF-8在 JSON 规则生效前即解码失败
超大输入内存或时间超限
重复键多数解析器后值覆盖前值——可能静默丢数据

解析只保证 语法 合法,不保证业务含义正确(错误 ID、缺字段)——需 schema 或业务逻辑校验。

解析、校验与转换

  1. 解析 — 文本是否为合法 JSON?
  2. 校验(可选)— 是否符合 schema 或必填字段?
  3. 转换 — 映射为领域类型(日期、精度数、枚举等)

生产环境应分阶段处理,便于定位错误类型。

安全提示

不要用 eval 执行 JSON 文本,应使用专用解析器。对不可信输入限制体积与嵌套深度(若库支持)。

理解解析,就能明白为何一个多余逗号会阻断后续流程——以及为何总要 先修语法

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览