如何使用Symfony Yaml转储空数组

时间:2016-07-21 14:34:04

标签: php symfony yaml

我正在尝试使用Symfony Yaml dump函数输出一些嵌套的php数组数据。

use \Symfony\Component\Yaml\Yaml;

echo Yaml::dump([
    'arr'=>[],
    'foo'=>'bar',
]);

但是,转储的YAML包含一个空对象:

arr: {  }
foo: bar

虽然我想要一个空列表:

arr: []
foo: bar

我尝试使用Yaml::DUMP_OBJECT_AS_MAP标记,使用ArrayObject代替数组文字,并使用EmptyIterator,但都无济于事。

我发现了两个与此相关的已解决的错误:https://github.com/symfony/symfony/issues/9870https://github.com/symfony/symfony/issues/15781,但是那里的解决方案似乎不起作用,或者根据我的口味有点过于苛刻和脆弱(str_replace on the YAML输出,brrrr)

我有一个简单的测试用例,其中包含我迄今为止所尝试的内容:https://github.com/ComaVN/php-yaml-empty-array

有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:2)

从Symfony 3。3(2017年5月发布)开始,您可以使用新的Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE选项:

Yaml::dump($object, 2, 4, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE);

此功能已添加到PR 21471

答案 1 :(得分:-2)

尝试将其放在某些形式的引号中,以便以后可以提取它?

'arr'=>'[]',