如何让Symfony将空关联数组序列化为空JSON对象?

时间:2015-02-05 15:40:55

标签: php symfony serialization

我需要使用Symfony将一组PHP关联数组序列化为JSON。其中一些阵列恰好是空的。

这意味着包含数据的所有数组都将序列化为JSON对象,而所有空数组都将序列化为JSON空数组。因为我想避免检查某些东西是对象还是数组,所以我更愿意将所有数组(空或不是)序列化为JSON对象,而不是数组。

如何使用Symfony 2实现这一目标?

2 个答案:

答案 0 :(得分:1)

Symfony 2允许您将上下文传递给序列化程序,您可以在其中设置序列化选项。我在官方文档中找不到这个,但在查看源代码时看到了它。

为了将空PHP数组序列化为空JSON对象,您需要将标志传递给json_encode(这是Symfony JSON编码器使用的)。您可以传递任意标记,基本上是json_encode接受的所有选项。

它的工作原理如下:

$serializer->serialize($myObject, "json", ["json_encode_options" => JSON_FORCE_OBJECT])

答案 1 :(得分:0)

自Symfony 4.4起,有一个新选项preserve_empty_objects可为您提供帮助-如果您可以先将空数组转换为空对象,则可以使用

$array = ['foo' => new stdClass()];
$serializer->serialize($array, "json", ["preserve_empty_objects" => true]);
// {'foo': {}}