私は 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 応答。
誰かがこれを行う方法を持っていますか?