Как показать нулевое значение в JSON в FOS Rest Bundle с JMS Serializer?

Я прочитал это: https://github.com/schmittjoh/serializer/issues/77, но сделал не найти способа сериализовать нулевые значения в JSON для пакета FOS Rest с сериализатором JMS (что означает просто показать ключ объекта Doctrine, даже если он равен нулю).

Я использую следующую конфигурацию в 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'», поэтому, если можно предоставить решение из конфигурации, это поможет, спасибо.


person Geshan    schedule 28.05.2013    source источник
comment
Я так и не понял этого, я не думаю, что это возможно, tbh.   -  person Baba Yaga    schedule 28.05.2013


Ответы (3)


Попробуй это

в вашем контроллере

    $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 по поводу конфигов мне не известно.

person stwe    schedule 28.05.2013
comment
Где мне это сделать? Контроллер расширен от контроллера Symfony, и я даже не использую представление. Я просто возвращаю объект. - person Geshan; 28.05.2013
comment
Прошу прощения за отрицательный ответ, потому что ответ действительно работает. Но Контроллер - неподходящее место для написания такой логики. Эта логика должна быть согласованной для всего проекта и, следовательно, быть в глобальном файле конфигурации. - person Gmajoulet; 22.12.2014
comment
@stwe Можно ли добавить это как хук? У меня уже есть много контроллеров, и я хотел бы включить это по умолчанию. К сожалению, я не использую fos_rest, и мне кажется, что для Symfony или самого jms нет параметров конфигурации. - person lony; 25.09.2015

С недавнего времени вы можете установить следующую опцию в конфиге:

fos_rest:
    serializer:
        serialize_null: true
person Itako    schedule 01.07.2013
comment
Недавнее значение dev-master, не стабильное (0.12.0) - person Tjorriemorrie; 07.07.2013

Самый простой способ заставить эту функцию работать как шарм

Добавьте следующую дополнительную конфигурацию в свой вариант конфигурации fos_rest:

fos_rest:
    serializer:
        serialize_null: true

person MUSTAPHA GHLISSI    schedule 06.04.2018