2016-06-16 1 views
2

J'ai une classe simple comme:Comment puis-je ajouter le nom de la classe d'un objet que l'indice du JSON serializated dans JMSSerialize

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

Si je sérialiser un nouvel objet avec:

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

je vais obtenir quelque chose comme:

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

Je me demande s'il est possible d'avoir cette place (Edit: et pour pouvoir désérialiser le sa moi string):

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

Merci

Répondre

1

Vous pouvez essayer ceci:

// 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

Oui, mais je ne vais pas être en mesure de désérialiser 'voiture: {portes: 1, couleur: ' rouge ', sièges: 4} ' –

+0

Je change ma réponse, j'espère que cela peut vous aider. :) – doydoy44

+0

Bien 1 parce que c'est une solution possible. Je cherchais quelque chose de plus propre avec une configuration ou des auditeurs de sérialisation. Merci :) –