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

时间:2015-01-03 20:20:57

标签: php symfony yaml

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

1 个答案:

答案 0 :(得分:1)

您是否会发布您正在转储的配置输入?

另外,我猜这个问题的唯一原因是你的输入被认为是一个哈希,看看这一行显示如果你的数组不包含从0到count-1的键,你的输入将被考虑作为哈希:

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

如果将其视为哈希值,而不是输出"-",则会输出"key: value" yaml

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