Symfony YAML 组件中的嵌套序列何时编号

When are nested sequences numbered in the Symfony YAML Component

我正在使用 Symfony YAML 组件来解析 Flexget 配置文件。然而,有时它将电视节目的序列转换为编号列表,而实际上它应该是一个带有破折号的列表 -.

错误的例子:

templates:
  tv:
    private_torrents: no
    regexp:
      accept:
        12: 'Absolute Duo'
        13: 'Yuri Kuma Arashi'
        14: 'Miritari!'
        ...

正确示例:

templates:
  tv:
    private_torrents: no
    regexp:
      accept:
        - 'Absolute Duo'
        - 'Yuri Kuma Arashi'
        - 'Miritari!'
        ...

如何防止这种情况发生?

这是我将 YAML 转储到文件的方式: $config = Yaml::dump($this->config, 99, 2);

我使用 99 因为我从不需要内联配置。

我正在转储的配置:

array (size=2)
  'templates' => 
    array (size=1)
      'tv' => 
        array (size=4)
          'private_torrents' => string 'no' (length=2)
          'regexp' => 
            array (size=1)
              'accept' => 
                array (size=9)
                  0 => string 'Shingeki no Bahamut' (length=19)
                  1 => string 'Sora no Method' (length=14)
                  2 => string 'Gugure! Kokkuri-san' (length=19)
                  3 => string 'Majin Bone' (length=10)
                  4 => string 'Grisaia no Kajitsu' (length=18)
                  5 => string 'Queen's Blade Rurou no Senshi' (length=29)
                  6 => string 'Daitoshokan no Hitsujikai' (length=25)
                  7 => string 'Trinity Seven' (length=13)
                  8 => string 'Akame ga Kill!' (length=14)

你会发布你正在转储的配置输入吗?

另外,我猜这个问题可能的唯一原因是你的输入被认为是一个散列,查看这一行表明如果你的数组不包含从 0 到 count-1 的键,你的输入将被视为哈希:

https://github.com/symfony/Yaml/blob/master/Dumper.php#L57

并且如果认为是hash,不是输出"-",而是输出"key: value" yaml

https://github.com/symfony/Yaml/blob/master/Dumper.php#L64