我正在使用 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 响应。
有没有人有办法做到这一点?