2017-04-20 52 views
3

我使用FOS休息捆綁軟件和JMS序列化程序來創建一個REST API。問題是我想保留JSON響應中的屬性名稱,而不是使用_。JMS序列化程序:如何使用駱駝案件的屬性

例如,我有一個名爲employeeIdentifier的屬性,默認情況下會轉換爲employee_identifier。

我看到在配置中有一個選項可以禁用小寫字母併除去_,但它會變成EmployeeIdentifier。

有什麼方法可以讓JMS序列化程序保留屬性的原始名稱?在此先感謝

回答

11

我發現了一個辦法做到在全球範圍吧,如果你想保留的屬性名稱爲的是你需要使用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(); 
+0

沒有,那不作任何區別只是刪除了separador,所以employeeIdentifier得到employeeidentifier – petekaner

+0

@petekaner做了多一點挖掘發現你正在尋找 – Chausser

+0

似乎應該工作,但我得到這個錯誤你已經請求一個不存在的參數「jms_serializer.identical_property_naming_strategy.class」。 – petekaner