web-dev-qa-db-ja.com

JMSシリアライザーでFOS Rest BundleのJSONにnull値を表示する方法

私はこれを読みました: https://github.com/schmittjoh/serializer/issues/77 JMSシリアライザー付きのFOS RestバンドルのJSONでnull値をシリアル化する方法が見つかりませんでした(つまりDoctrineオブジェクトがnullであっても)のキーを表示するだけです。

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 config

fos_rest:
view:
    serialize_null: true

動作しません。私は「view_response_listener: 'force'」というビューを使用していません。そのため、構成からのソリューションを提供できる場合は、お役に立てば幸いです。

36
Geshan

これを試して

あなたのコントローラーで

    $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;

しかし、configsに関するfosrestbundleとの相互作用は私にはわかりません。

26
stwe

最近、configで次のオプションを設定できます。

fos_rest:
    serializer:
        serialize_null: true
94
Itako

この機能を魅力的に機能させる最も簡単な方法

次の追加構成をfos_rest構成オプションに追加します。

fos_rest:
    serializer:
        serialize_null: true
1