0

我在使用 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"

被拒绝。总之,在您进入带有实际括号表格的“表格模式”(可以说)之前,键只能是单键。

现在再次,在TOML 自述文件中它说(尽管在表格部分):

“虚线键将每个点左侧的所有内容定义为表格。”

显然,如果主流解析器对此感到窒息,那么使用它不是一个好主意,但我想了解它是否/为什么它是一个已知的禁忌。这里有一些我没有看到的歧义吗?

4

2 回答 2

1

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

于 2021-02-04T16:26:58.967 回答
0

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

[[somearray]]
one.two = false

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

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

可以在这里验证。

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

于 2021-02-02T19:32:51.857 回答