2

我正在使用 jms/serializer-bundle 和 Symfony,以及 YML 形式的序列化配置,将一些 Doctrine 对象序列化为 JSON。

现有的 API 意味着一些标签用下划线命名(例如“created_on”)

    createdOn:
        expose: true
        groups:
            label
        serialized_name: created_on

...

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

但我想为新的 API 版本整理一下,并在 camelCase 中为新的 API 调用返回响应。

我曾希望/认为我可以使用 JMS 序列化器“Until”和“Since”配置来引用我的实体属性两次,一次使用旧的 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