猿问

Symfony在序列化期间跳过空值

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


{

  key1: null

  key2: null

  key3: {

     keyA: null

     keyB: 'value'

  }

  key4: 'value'

}

如果我使用以下方法:


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

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


{

  key3: {

     keyA: null

     keyB: 'value'

  }

  key4: 'value'

}

有什么方法可以使用Symfony序列化程序组件来实现此目的?


慕尼黑8549860
浏览 156回答 2
2回答

互换的青春

您可以使用上下文传递 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);

慕侠2389804

您可以考虑使用JMSSerializerBundle而不是Symfony序列化器易于使用。您可以将null序列化为空字符串$context = new SerializationContext();$context->setSerializeNull(true);$objectData = $serializer->serialize($object, 'json', $context);
随时随地看视频慕课网APP
我要回答