Json_encode / JMS_Serializer, 保留数字键

Json_encode / JMS_Serializer, keep numeric key

我在 symfony 中有一个后端 API,在 vueJs 中有一个前端, 在我的应用程序中,我有一个获取表单定义的路径 ...

但是对于实体类型,我需要有选择列表,所以我这样做:

$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, [(string)$item->getId() => (string)$item]);
                    }, []);

理论上这 return 类似于:

[ "0" => "value1", "1" => "value2", "3" => "value3" ... ]
( note, key are not necessary continue)

实际上,调试器说“0”是数字,所以是 int! JMS 或 json_encode 做同样的事情......在序列化之后,我有一个没有键的简单数组!

如何欺骗 JMS 或本机 PHP 函数来获取真正的关联数组?

$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, ["0{$item->getId()}" => (string)$item]);
                    }, []);

在 id 前面连接“0”就可以了:)

我的表单中有一个 "fake" 字符串 ID ...但是当我提交表单时...symfony 将“01”转换为 int ^^