如何在 Symfony2 中将 Json 绑定到实体中

Posted

技术标签:

【中文标题】如何在 Symfony2 中将 Json 绑定到实体中【英文标题】:How to bind a Json into a Entity in Symfony2 【发布时间】:2012-12-24 19:55:07 【问题描述】:

我正在开发一个带有 iPad 前端和基于 Symfony2 的服务器的销售系统。它们之间的通信是通过json格式的POST方法进行的。

我已经看到可以将表单绑定到实体中,但我不知道如果我收到一个 jSon 对象是否有可能做到这一点。

例如,这是我在前端所拥有的(为了简单起见,在 javascript 中):

var sale=new Sale();
sale.client=10;
sale.user=1;
sale.product=11;
sale.quantity=100;
var jSon="client": sale.client,
                            "user":sale.user,
                            "product":sale.product,
                            "quantity":sale.quantity     

$.post("http://examplepath.com/new_sale", jSon,
             function (data) 
                if (data) 
                    alert(data);
                
                else 
                    alert("Not working :-(");
                
            
);   

现在,当我收到 json 时,我会执行以下操作:

$sale=new Sale(); //This is my entity :)
$sale->setUser($request->request->get("user"));
$sale->setClient($request->request->get("client"));
$sale->setProduct($request->request->get("product"));
$sale->setDate($date);

$em = $this->getDoctrine()->getEntityManager();
$em->persist($sale);
$em->flush();

有什么方法可以将 POST 收到的 json 与我的 Sale 实体绑定,而无需执行所有那些讨厌的设置器?

【问题讨论】:

不要编辑您的标题。接受答案! 【参考方案1】:

您要查找的内容称为Serialization

您可以使用 Symfony 2 提供的默认 Serializer component,但更方便的方法是使用 JMSSerializerBundle。

【讨论】:

以上是关于如何在 Symfony2 中将 Json 绑定到实体中的主要内容,如果未能解决你的问题,请参考以下文章

如何在Symfony2中将json渲染成树枝

如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?

如何在 Struts 2 中将 JSON 绑定到 bean

将重音字符 é 插入 Symfony2 中的表单时,如何在 mysql 数据库中将重音字符 é 保存为 é?

在 Vue 3 中将 JSON URL 绑定到 IMG

如何使用 Symfony2 路由组件将路由与控制器绑定