将 JSON 解码为 Symfony 实体

发布于 2024-12-05 06:20:57 字数 692 浏览 1 评论 0原文

有谁知道除了编写自定义脚本将 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');

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

Does anyone know if there is an easy way, aside from writing a custom script to decode a JSON object into a PHP entity?

I'm using the script below to encode to JSON, but when I decode it's an array and not an entity.

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

Then I'm decoding in this manner

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

But like I said... it's no longer a Coupon entity, it's just an array.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迎风吟唱 2024-12-12 06:20:57

假设以下工作正常:

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

Assuming the following works:

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

$coupon is a normalized array of the serialized data. Then assuming the class you want this data to be instantiated of is called Coupon, you need to denormalize it:

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

Mind the namespaces, the classname Coupon might not be correct.

高跟鞋的旋律 2024-12-12 06:20:57

我建议使用 JMSSerializerBundle

它的序列化器比序列化器组件中的序列化器先进得多。

I would recommend using the JMSSerializerBundle.

Its serializer is way more advanced than the serializer that the one from the Serializer Component.

余生共白头 2024-12-12 06:20:57

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

Another interesting option with JSON class hinting.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文