解码JSON到Symfony实体


Decode JSON into Symfony entity

有没有人知道,如果有一个简单的方法,除了编写自定义脚本解码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');

但是就像我说的…它不再是一个优惠券实体,它只是一个数组。

假设以下工作正常:

$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可能不正确

我建议使用JMSSerializerBundle。

它的序列化器比序列化器组件中的序列化器高级得多。

另一个有趣的JSON类提示选项