2016-12-04 9 views
2

単一のエンティティオブジェクトをシリアル化してデシリアライズしてください。Symfony3複数のエンティティオブジェクトを逆シリアル化する

このように複数のオブジェクト(オブジェクトの配列)を直列化および逆シリアル化することは可能ですか?

$notifications = $this->getDoctrine() 
    ->getRepository('AppBundle:Notification') 
    ->findAll(); 

$encoder = new JsonEncoder(); 
$normalizer = new ObjectNormalizer(); 

$serializer = new Serializer(array($normalizer), array($encoder)); 
$jsonContent = $serializer->serialize($notifications, 'json'); 

return new Response($jsonContent); 

そして

$response = curl_exec($ch); // my $jsonContent from previous code 

$encoder = new JsonEncoder(); 
$normalizer = new ObjectNormalizer(); 

$serializer = new Serializer(array($normalizer), array($encoder)); 
$notifications = $serializer->deserialize($response, Notification::class, 'json'); 

それから私は得た:

プロパティパスのコンストラクタは、文字列または のインスタンス "のSymfony \コンポーネント\ PropertyAccess \のPropertyPath" を必要とします。ガット:「整数」500 内部サーバーエラー - にUnexpectedValueException

+0

は、ウィルは愚かに聞こえるが、エラーメッセージがあなたの財産パスコンストラクタはインスタンスを待っている...あなたのすべてを教えてくれない解決策を見つけました[PropertyAccess](http://symfony.com/doc/current/components/property_access.html)の子である「PropertyPath」の名前です。しかし、あなたのコンストラクタはIntegerをパラメータとして取得しますが、これは明らかに間違っています。 construtorとそれに関連するすべてを質問plzに追加できますか? – Preciel

答えて

3

を私は

use Symfony\Component\Serializer\Encoder\JsonEncoder; 
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; 
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer; 
use Symfony\Component\Serializer\Serializer; 

$serializer = new Serializer(
    array(new GetSetMethodNormalizer(), new ArrayDenormalizer()), 
    array(new JsonEncoder()) 
); 

$data = ...; // The serialized data from the previous example 
$persons = $serializer->deserialize($data, 'Acme\Person[]', 'json'); 
関連する問題