我使用FOS休息捆綁軟件和JMS序列化程序來創建一個REST API。問題是我想保留JSON響應中的屬性名稱,而不是使用_。JMS序列化程序:如何使用駱駝案件的屬性
例如,我有一個名爲employeeIdentifier的屬性,默認情況下會轉換爲employee_identifier。
我看到在配置中有一個選項可以禁用小寫字母併除去_,但它會變成EmployeeIdentifier。
有什麼方法可以讓JMS序列化程序保留屬性的原始名稱?在此先感謝
我使用FOS休息捆綁軟件和JMS序列化程序來創建一個REST API。問題是我想保留JSON響應中的屬性名稱,而不是使用_。JMS序列化程序:如何使用駱駝案件的屬性
例如,我有一個名爲employeeIdentifier的屬性,默認情況下會轉換爲employee_identifier。
我看到在配置中有一個選項可以禁用小寫字母併除去_,但它會變成EmployeeIdentifier。
有什麼方法可以讓JMS序列化程序保留屬性的原始名稱?在此先感謝
我發現了一個辦法做到在全球範圍吧,如果你想保留的屬性名稱爲的是你需要使用IdenticalPropertyNamingStrategy
您可能需要重寫默認的別名,這
services:
jms_serializer.naming_strategy:
alias: jms_serializer.identical_property_naming_strategy
束定義這些https://github.com/schmittjoh/JMSSerializerBundle/blob/master/Resources/config/services.xml所以你應該能夠覆蓋它們
另一種方法是,當你初始化建設者:
$serializebuilder = JMS\Serializer\SerializerBuilder::create();
$serializebuilder->setPropertyNamingStrategy(new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy());
$serializer = $serializebuilder->build();
我找到了一個方法來做到這一點,但它不是我想的最好的方法,有一個註釋SerializedName,它允許你重載屬性序列化。問題是,你必須通過一個與駱駝每個屬性做一個,這裏的文檔: YAML:http://jmsyst.com/libs/serializer/master/reference/yml_reference 註釋:http://jmsyst.com/libs/serializer/master/reference/annotations#serializedname
沒有,那不作任何區別只是刪除了separador,所以employeeIdentifier得到employeeidentifier – petekaner
@petekaner做了多一點挖掘發現你正在尋找 – Chausser
似乎應該工作,但我得到這個錯誤你已經請求一個不存在的參數「jms_serializer.identical_property_naming_strategy.class」。 – petekaner