【问题标题】:Symfony skip null value during serializationSymfony 在序列化期间跳过空值
【发布时间】:2019-09-09 19:21:21
【问题描述】:

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

{
  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 序列化器组件来实现这一点?

【问题讨论】:

    标签: php symfony serialization


    【解决方案1】:

    你可以考虑用 JMSSerializerBundle 代替 Symfony 序列化器

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

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

      • OP 使用 symfony/serializer,而不是 JMS/serializer
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2017-03-17
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多