Декодировать JSON в сущность Symfony - PullRequest
3 голосов
/ 20 сентября 2011

Кто-нибудь знает, есть ли простой способ, кроме написания собственного скрипта для декодирования объекта JSON в сущность PHP?

Я использую приведенный ниже скрипт для кодирования в JSON, но когда ядекодировать это массив, а не сущность.

$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new 
            JsonEncoder()));
            $json = $serializer->serialize($coupon, 'json');
            $session->set('json', $json);

Тогда я декодирую таким образом

$session = $this->getRequest()->getSession();
    $json = $session->get('json');
    $serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
    $coupon = $serializer->decode($json, 'json');

Но, как я уже сказал ... это больше не сущность купона, этопросто массив.

Ответы [ 3 ]

7 голосов
/ 20 сентября 2011

При условии, что следующие работы:

$session = $this->getRequest()->getSession();
$json = $session->get('json');
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
$coupon = $serializer->decode($json, 'json');

$coupon - нормализованный массив сериализованных данных.Затем, предполагая, что класс, для которого вы хотите создать эти данные, называется Coupon, вам нужно его денормализовать:

$coupon = $serializer->denormalize($coupon, 'Coupon');

Запомните пространства имен, имя класса Coupon может быть неверным.

1 голос
/ 26 июля 2012

Я бы порекомендовал использовать JMSSerializerBundle .

Его сериализатор гораздо более продвинутый, чем сериализатор из компонента Serializer.

0 голосов
/ 16 января 2012

Еще один интересный вариант с подсказкой класса JSON .

...