3

Ich benutze FOS Rest Bundle und JMS Serializer, um eine REST API zu erstellen. Das Problem ist, ich möchte die Eigenschaftsnamen in der JSON-Antwort camel cased behalten, anstatt _ zu verwenden.JMS Serializer: wie Camel Case für Eigenschaften zu verwenden

Zum Beispiel habe ich eine Eigenschaft namens employeeIdentifier, die standardmäßig in employee_identifier konvertiert wird.

Ich sah, dass es eine Option in der Konfiguration gibt, um den Kleinbuchstaben zu deaktivieren und das _ loszuwerden, aber dann wird es EmployeeIdentifier.

Gibt es eine Möglichkeit, dass der JMS-Serializer den ursprünglichen Namen der Eigenschaft behält? Vielen Dank im Voraus

Antwort

11

fand ich einen Weg, um es global zu tun, wenn Sie die Eigenschaftsnamen behalten möchten, wie Sie verwenden müssen die IdenticalPropertyNamingStrategy

Sie müssen möglicherweise den Standard-Alias ​​für diese

services: 
    jms_serializer.naming_strategy: 
     alias: jms_serializer.identical_property_naming_strategy 
außer Kraft zu setzen

Das Bündel definiert diese https://github.com/schmittjoh/JMSSerializerBundle/blob/master/Resources/config/services.xml so sollten Sie in der Lage sein, sie

Eine andere Möglichkeit, außer Kraft zu setzen, es zu tun ist, wenn Sie den Generator zu initialisieren:

$serializebuilder = JMS\Serializer\SerializerBuilder::create(); 
$serializebuilder->setPropertyNamingStrategy(new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()); 
$serializer = $serializebuilder->build(); 
+0

nein, das einen Unterschied nur die separador machen tut entfernt, so employeeIdentifier employeeidentifier bekommt – petekaner

+0

@petekaner hat ein wenig mehr graben gefunden, was Sie suchen – Chausser

+0

scheint, wie es funktionieren sollte, aber ich bekomme diesen Fehler Sie haben einen nicht vorhandenen Parameter "jms_serializer.identical_property_naming_strategy.class" angefordert. – petekaner

0

Ich habe einen Weg gefunden, es zu tun, aber es ist nicht der beste Weg, ich denke, es gibt eine Anmerkung SerializedName, mit der Sie die Eigenschaft Serialisierung überschreiben können. Das Problem ist, dass man sie eins nach dem anderen auf jede Eigenschaft mit Kamel Fall zu tun haben, ist hier die Dokumentation: YAML: http://jmsyst.com/libs/serializer/master/reference/yml_reference Annotation: http://jmsyst.com/libs/serializer/master/reference/annotations#serializedname

Verwandte Themen