38

我通读了这个:https ://github.com/schmittjoh/serializer/issues/77但没有找到任何方法来序列化 JSON 中的空值,用于带有 JMS 序列化程序的 FOS Rest 捆绑包(意味着只显示教义的关键对象,即使它为空)。

我在 composer.json 中使用以下配置

"jms/serializer-bundle": "0.12.*@dev",
"friendsofsymfony/rest-bundle": "0.13.*@dev",

JMS 序列化程序配置

#jms-serializer
jms_serializer:
 visitors:
    json:
        options: 0 # json_encode options bitmask
        serialize_null: true

或 FOS Rest bunde 配置

fos_rest:
view:
    serialize_null: true

不工作。我没有使用视图,我是“view_response_listener:'force'”,所以如果可以提供配置中的解决方案,它会有所帮助,谢谢。

4

3 回答 3

99

从最近开始,您可以在配置中设置以下选项:

fos_rest:
    serializer:
        serialize_null: true
于 2013-07-01T10:34:03.040 回答
28

尝试这个

在你的控制器中

    $entity = $this->getEntity($id);

    $context = new SerializationContext();
    $context->setSerializeNull(true);

    $serializer = $this->get('jms_serializer');

    $response = new Response($serializer->serialize($entity, 'json', $context));
    $response->headers->set('Content-Type', 'application/json');

    return $response;

但是我不知道与 fosrestbundle 关于配置的交互。

于 2013-05-28T11:53:41.570 回答
4

使此功能发挥作用的最简单方法就像一个魅力

将以下额外配置添加到您的 fos_rest 配置选项:

fos_rest:
    serializer:
        serialize_null: true

于 2018-04-06T15:53:12.367 回答