2016-06-16 12 views
2

Ich habe eine einfache Klasse wie hinzufügen:Wie kann ich den Klassennamen eines Objekts als Index des serializated json in JMSSerialize

class Car 
{ 
    public doors; 
    public color; 
    public seats; 
} 

Wenn ich serialisiert ein neues Objekt mit:

$this->get('jms_serializer')->serialize($newCar, 'json'); 

ich werde bekommen so etwas wie:

{doors:1, color: 'red', seats: 4} 

ich frage mich, ob es möglich ist, dies zu haben, statt (Edit: und in der Lage zu sein, den sa deserialisieren me string):

car:{doors:1, color: 'red', seats: 4} 

Dank

Antwort

1

Sie können dies versuchen:

// Encode 
$className = get_class($newCar); 
$jmsSerialize = $this->get('jms_serializer')->serialize($newCar, 'json'); 
$resultJSONEncode = json_encode([$className=>$jmsSerialize]); 
var_dump($resultJSONEncode); 

// Decode 
$resultJSONDecode = json_decode($resultJSONEncode, true); 
$jmsDesrialize = $this->get('jms_serializer')->deserialize($resultJSONDecode[$className], $className, 'json'); 
var_dump($jmsDesrialize); 
+0

Ja, aber dann werde ich nicht in der Lage sein deserialisieren 'Auto: {Türen: 1, Farbe: ' rot ', Sitze: 4} ' –

+0

Ich ändere meine Antwort, ich hoffe, dass dir das helfen kann. :) – doydoy44

+0

Nun +1, weil es eine mögliche Lösung ist. Ich war auf der Suche nach etwas sauberer mit einer Konfiguration oder Serialisierung Listener. Danke :) –