YAML多行字符串:键与数组值



这是非常具体的,但让我感到困惑。我们在解析时处理嵌套键 常规阵列几乎相同 - 有时在需要时添加额外的信息,例如:

---
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"
  ]
}

都很凉爽。输入多行字符串的内容会变得更加混乱,但仍然可以正常工作(继续将其粘贴到在线yaml解析器或其他编译器中以供参考):

---
#works:
Test:
  - lorem
  - ipsum
  - dolor
? |-
    multiline
    Test
:
  - lorem
  - ipsum:
      true
  - dolor
...

在我的第二级阵列中,更深入的多行字符串,正如规格所预期的:

---
#works:
Test:
    - |-
        multiline
        lorem
    - ipsum
    - dolor
? |-
    multiline
    Test
:
    - lorem
    - ipsum:
        true
    - dolor
...

wohoo!但是,一旦我 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
...

最新更新