2

私は Symfony で jms/serializer-bundle を使用し、YML 形式のシリアライゼーション構成を使用して、一部の Doctrine オブジェクトを JSON としてシリアライズしています。

既存の API は、一部のラベルがアンダースコアで命名されたことを意味します (例: "created_on")。

    createdOn:
        expose: true
        groups:
            label
        serialized_name: created_on

...

    "created_on": "2014-03-06T14:28:17+0000",

しかし、私はこれを新しい API バージョンに合わせて整理し、新しい API 呼び出しに対してキャメルケースで応答を返したいと考えています。

JMSシリアライザーの「Until」および「Since」構成を使用して、エンティティのプロパティを2回参照できることを期待/考えていました。1つは古いserialized_nameで、もう1つは新しいserialized_nameです。

    createdOn:
        expose: true
        groups:
            label
        serialized_name: created_on
        until: 1.9.x
    createdOn:
        expose: true
        groups:
            label
        serialized_name: createdOn
        since: 2.0

...

    "createdOn": "2014-03-06T14:28:17+0000",

しかし、明らかにこれは機能しません。また、「2.1」バージョンを virtual_properties に変更し、別のグループ名を使用しようとしましたが、それも機能しませんでした。

プレーンな SerializerBuilder/SerializationContext クラスを使用していた場合、次のようなことができるように見えます。

$serializer = SerializerBuilder::create();
$serializer->setPropertyNamingStrategy(
    new SerializedNameAnnotationStrategy(
        new CamelCaseNamingStrategy()
    )
);

とにかくすべてをキャメルケースに強制します。

でも僕はそうじゃない。私は jms_serializer サービスを使用しており、必要なシリアライゼーション グループをサポートするためにそのインフラストラクチャに依存しています。また、dependency_injection を介して独自のバージョンを構築する方法がわかりません。これは、私の「新しい」のために、別の命名戦略を採用しています。 API 応答。

誰かがこれを行う方法を持っていますか?

4

0 に答える 0