我正在尝试序列化一个对象并跳过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序列化器组件来实现这一目标?
答案 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);