TOML 验证器
在构建因文件错误而失败之前,验证 TOML 文件,例如 Cargo.toml、pyproject.toml,或 Hugo 和 Netlify 设置。验证器会根据 TOML 规范解析输入,并报告遇到的第一个错误及其行号、列号和解析器说明,包括重复键、表格重新定义和不可能的日期。对于有效文件,验证器会显示表格和键的数量以及顶层键,方便你快速确认结构。
常见问题
TOML 验证器会检查什么?
它会严格按照 TOML 规范解析键、字符串、数字、布尔值、日期和时间、数组、内联表、表和表数组。任何偏差,例如缺少值、字符串未加引号或转义无效,都会被报告为错误。有效文件会附带简短的结构摘要。
错误包含哪些信息?
每条错误都会显示解析停止处的行号和列号,以及解析器提供的详细信息,例如日期无效,或尝试重新定义已定义的表或值。行号和列号从 1 开始计数。只显示第一个错误,因为后续错误往往由此引起。
为什么键或表会被报告为重新定义?
TOML 不允许在同一个表中重复使用键,像 [server] 这样的表头也只能出现一次。如果 [server] 表已经设置了 port,之后再定义像 server.port 这样的点分隔键,也会被视为重新定义。将条目合并到同一处即可修复。
表和键如何计数?
“表”会统计根级以下的所有表,包括内联表和表数组中的每个条目。“键”会统计每个值不是表或表数组的键,因此字符串列表计为一个键。“顶层键”会列出根级的名称,最多 50 个。
日期和时间会经过检查吗?
会。带偏移量的日期时间、本地日期时间、本地日期和本地时间都会经过验证,包括月份为 13 或小时为 25 这类不可能的值。使用其他格式编写的日期,例如 05/27/1979,并非 TOML 日期,必须加引号作为字符串。
允许使用哪些字符串和转义序列?
双引号基本字符串支持 \n、\t、\" 和 \uXXXX 等转义序列;单引号字面字符串则会按原样读取每个字符。两种字符串都支持使用三个引号的多行形式。遇到未知转义序列或未终止的字符串时,验证器会报告其位置。
接受非常大的整数吗?
接受。TOML 规范允许的 64 位范围内的整数(例如 9223372036854775807)均可接受。超出该范围的整数、前导零,以及不在数字之间的下划线都会被报告为错误。
字节顺序标记或 Windows 换行符会造成问题吗?
不会。文件开头的 UTF-8 字节顺序标记会被忽略,LF 和 CRLF 换行符都可接受。未转义的字符串内控制字符会被报告为错误。
它会检查键的含义吗?例如 Cargo 或 Poetry 是否认可这些键?
不会,验证器只检查 TOML 语法和结构。文件即使是有效的 TOML,其中也可能包含 Cargo 或 Python 构建后端无法识别的键。请先使用此工具排除语法问题,再检查特定工具的设置。
输入最大可以有多大?我可以转换它吗?
输入最多可达 5 MiB,嵌套数组和内联表最多可达 64 层。要将有效的 TOML 转换为 JSON、YAML 或其他格式,请使用数据格式转换器。