php - 如何使用 Symfony Yaml 转储空数组

标签 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 ,但那里的解决方案似乎不起作用,或者对我来说有点太老套和脆弱了(YAML 输出上的 str_replace,brrrr)

到目前为止,我有一个简单的测试用例:https://github.com/ComaVN/php-yaml-empty-array

关于如何解决这个问题有什么建议吗?

最佳答案

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

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

此功能是在 PR 21471 中添加的.

关于php - 如何使用 Symfony Yaml 转储空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507111/

相关文章:

php - '+' 符号和 MySQL REGEXP 的问题

PHP:在数组中分隔 1 个键的 2 个或多个值

symfony - 如何在没有渲染路线的情况下获取 Twig 中的当前绝对网址?

php - 如何隐藏或删除默认可用的控制台命令?

Python-yaml : yaml. reader.ReaderError: Not Acceptable 字符

bash - 替换 yaml 文件中的行

php - PHP 等式(== 双等式)和恒等式(=== 三等式)比较运算符有何不同?

php - 在 MySQL 和 PHP 中使用 Join 的别名

symfony - 使用 NormalizerAwareTrait 的 Normalizer 空引用

go - 是否可以将 Go Task runner 配置为使用文件扩展名 yaml?