文本、JSON 与时间规范化
本节目标
在不破坏代码、Markdown、标识符和凭据边界的前提下规范文本、JSON 与时间,并为每次有损变化保留来源和审计证据。
文本
先统一 UTF-8 读写,保留原文,再生成规范字段。对自然语言字段,可在契约允许时去首尾空格和统一换行;不要默认折叠内部连续空白,因为它会改变 Python 缩进、Markdown 代码块、表格和用户原始格式。Unicode NFC/NFKC 可能改变字符表现;NFKC 会把部分兼容字符合并,涉及密码、代码、标识符或法律原文时不能盲用。
大小写、标点、emoji、代码块和 Markdown 结构可能承载语义。RAG 清洗不应为了“干净”删除标题、列表、表格或页码来源。
JSON
JSON 对象应验证必填字段、类型、枚举和嵌套结构。注意:
- JSON 标准不允许注释,键名必须是字符串。
null与字段不存在应按契约区分。- 数字范围需结合消费端实现;超大整数可能在其他语言丢精度。
- 不要把未知字段静默丢弃;记录 schema 版本和兼容策略。
JSON Schema 应声明具体 $schema 版本(当前规范为 2020-12)。format: "date-time" 在不同验证器中可能只是注解,是否作为阻断断言需要显式配置并用失败样例测试,不能只看 schema 文件“写了 format”。
时间
时间至少包含事件时刻、时区和精度。内部常统一到 UTC,展示时再转本地时区。只有 2026-07-13 09:00 而无时区时,不能可靠排序跨地区事件。
区分:事件发生时间、服务接收时间、入库时间。延迟到达和时钟偏差会让它们不同。不要用文件修改时间代替业务事件时间。
隐私与凭据
清洗前后都不得在日志中输出 token、cookie、API key、完整邮箱或不必要的用户内容。脱敏规则应在源字段副本上执行并测试,不能只靠正则假设覆盖所有秘密格式。
哈希适合做完整性和关联摘要,但不是自动匿名化:低熵标识符可被枚举反推,相同输入也会暴露关联。敏感数据仍需最小化、访问控制、留存和删除策略。
练习
设计一条工具调用 JSON 事件,包含 schema_version、event_id、UTC 时间、工具名、状态、错误码和经过脱敏的参数摘要。说明哪些字段禁止进入训练数据。
掌握检查
- 我知道何时只能规范换行/首尾空白,不能折叠内部空白或应用 NFKC。
- 我能区分 JSON
null、字段缺失与空字符串,并声明未知字段策略。 - 我会把含时区时间转换为 UTC,同时保留事件/接收/入库三种时刻的语义。
- 我不会把哈希、掩码或正则替换直接称为匿名化。
下一步:质量验证与可复现管线。
参考资料
资料核验日期:2026-07-14。