Symfony在序列化期间跳过空值

时间:2019-04-19 14:15:01

标签: php symfony serialization

我正在尝试序列化一个对象并跳过null值,这是我尝试序列化的对象:

{
  key1: null
  key2: null
  key3: {
     keyA: null
     keyB: 'value'
  }
  key4: 'value'
}

如果我使用以下方法:

$object = self::getInstance()->serialize($object, "json", ['skip_null_values' => true]);

该对象已成功序列化,但只删除了第一级的空键,而不删除了key3对象中的空键。

{
  key3: {
     keyA: null
     keyB: 'value'
  }
  key4: 'value'
}

有什么方法可以使用Symfony序列化器组件来实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以考虑使用JMSSerializerBundle而不是Symfony序列化器

易于使用。您可以将null序列化为空字符串

$context = new SerializationContext();
$context->setSerializeNull(true);
$objectData = $serializer->serialize($object, 'json', $context);

答案 1 :(得分:-1)

您可以使用上下文传递setSerializeNull(true)

use FOS\RestBundle\Context\Context;

在您的函数中:

$data = ...
$view = $this->view($data, 200);

$context = new Context();
$context->setSerializeNull(true);
$view->setContext($context);

return $this->handleView($view);