数组内的 TOML 多级 table 语法——非法与否

TOML multi-level table syntax inside array -- illegal or not

我在使用 Python 和 JS 解析器进行解析时遇到错误。我似乎无法在 TOML 存储库中找到关于是否应该接受的示例:

[[somearray]]
one.two = false # fails, '.' not allowed in key

我知道我可以表达为:

[[somearray]]
   [somearray.one]
   two = false # OK

TOML 自述文件提供了这个示例(以及其他示例):

[fruit]
apple.color = "red"
apple.taste.sweet = true

它不涉及数组,但似乎使这种语法合法化。

我还观察到一个包含以下内容的普通文件:

apple.color = "red"

被拒绝。总之,在您输入 "table mode"(可以这么说)并带有实际括号 table 之前,键只能是单曲。

再一次,在 TOML readme 中它说(尽管在 tables 部分):

"Dotted keys define everything to the left of each dot as a table."

显然,如果主流解析器对它感到窒息,那么使用它并不是一个好主意,但我想了解 if/why 这是一个众所周知的禁忌。这里是不是有些歧义我没有看到?

以下是绝对有效的 Toml 语法:

[[somearray]]
one.two = false

它应该产生一个等价于这个 Json 语法的模型:

{
    "somearray": [
        {
            "one": {
                "two": false
            }
        }
    ]
}

可以验证here

虚线键确实应该将每个点左侧的所有内容定义为 table。

根据 1.0 规范,这些案例被确认为有效的 TOML,其中添加了更多示例:https://github.com/toml-lang/toml/blob/1.0.0/toml.md