数组内的 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
我在使用 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