YAML 多行字符串:键与数组值
YAML multi-line strings: keys vs array values
这很具体,但让我很困惑。我们在解析时几乎相同地对待嵌套键 + 常规数组——有时会在需要时添加额外信息,如下所示:
---
Entry 1:
- lorem:
true
- ipsum
- dolor
Entry 2:
- lorem
- ipsum:
true
- dolor
...
... 这给了我这个 JSON:
{
"Entry 2": [
"lorem",
{
"ipsum": true
},
"dolor"
],
"Entry 1": [
{
"lorem": true
},
"ipsum",
"dolor"
]
}
一切都很好。为内容输入多行字符串会变得更乱,但仍然可以像这样正常工作(将它们粘贴到 Online YAML Parser 或其他一些编译器以供参考):
---
#works:
Test:
- lorem
- ipsum
- dolor
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
更深入,我的二级数组中的多行字符串也能正常工作,正如规范所预期的那样:
---
#works:
Test:
- |-
multiline
lorem
- ipsum
- dolor
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
哇哦!但是一旦我 mix 多行键和多行数组字符串在同一级别,我的设置就会中断:
---
#breaks:
Test:
- |-
multiline
lorem
? |-
multiline
ipsum
:
true
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
如何解决?
如果您在同一级别混合使用键和数组项,YAML 会中断。你不需要多行字符串:
- 1
? 2
: 3
这应该解析成什么?数组?映射?然而,这有效:
- 1
- ? 2
: 3
因此您可以像这样修复 YAML:
---
Test:
- |-
multiline
lorem
- ? |-
multiline
ipsum
:
true
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
这很具体,但让我很困惑。我们在解析时几乎相同地对待嵌套键 + 常规数组——有时会在需要时添加额外信息,如下所示:
---
Entry 1:
- lorem:
true
- ipsum
- dolor
Entry 2:
- lorem
- ipsum:
true
- dolor
...
... 这给了我这个 JSON:
{
"Entry 2": [
"lorem",
{
"ipsum": true
},
"dolor"
],
"Entry 1": [
{
"lorem": true
},
"ipsum",
"dolor"
]
}
一切都很好。为内容输入多行字符串会变得更乱,但仍然可以像这样正常工作(将它们粘贴到 Online YAML Parser 或其他一些编译器以供参考):
---
#works:
Test:
- lorem
- ipsum
- dolor
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
更深入,我的二级数组中的多行字符串也能正常工作,正如规范所预期的那样:
---
#works:
Test:
- |-
multiline
lorem
- ipsum
- dolor
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
哇哦!但是一旦我 mix 多行键和多行数组字符串在同一级别,我的设置就会中断:
---
#breaks:
Test:
- |-
multiline
lorem
? |-
multiline
ipsum
:
true
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...
如何解决?
如果您在同一级别混合使用键和数组项,YAML 会中断。你不需要多行字符串:
- 1
? 2
: 3
这应该解析成什么?数组?映射?然而,这有效:
- 1
- ? 2
: 3
因此您可以像这样修复 YAML:
---
Test:
- |-
multiline
lorem
- ? |-
multiline
ipsum
:
true
? |-
multiline
Test
:
- lorem
- ipsum:
true
- dolor
...