我正在开发游戏应用程序和使用Symfony 2.0。我有很多AJAX请求到后端。更多的响应是将实体转换为JSON。例如:
class DefaultController extends Controller
{           
    public function launchAction()
    {   
        $user = $this->getDoctrine()
                     ->getRepository('UserBundle:User')                
                     ->find($id);

        // encode user to json format
        $userDataAsJson = $this->encodeUserDataToJson($user);
        return array(
            'userDataAsJson' => $userDataAsJson
        );            
    }

    private function encodeUserDataToJson(User $user)
    {
        $userData = array(
            'id' => $user->getId(),'profile' => array(
                'nickname' => $user->getProfile()->getNickname()
            )
        );

        $jsonEncoder = new JsonEncoder();        
        return $jsonEncoder->encode($userData,$format = 'json');
    }
}

所有我的控制器做同样的事情:获得一个实体,并将其某些字段编码为JSON。我知道我可以使用规范化和编码所有的权限。但是如果一个实体循环链接到其他实体呢?还是实体图很大?你有什么建议吗?

我想到一些编码架构的实体…或使用normalizableInterface避免循环..,

另一个选择是使用 JMSSerializerBundle.然后在你的控制器中
$serializer = $this->container->get('serializer');
$reports = $serializer->serialize($doctrineobject,'json');
return new Response($reports); // should be $reports as $doctrineobject is not serialized

您可以通过使用实体类中的注释来配置如何完成序列化。请参阅上面链接中的文档。例如,以下是排除关联实体的方法:

/**
* Iddp\RorBundle\Entity\Report
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Iddp\RorBundle\Entity\ReportRepository")
* @ExclusionPolicy("None")
*/
....
/**
* @ORM\ManyToOne(targetEntity="Client",inversedBy="reports")
* @ORM\JoinColumn(name="client_id",referencedColumnName="id")
* @Exclude
*/
protected $client;

如何在Symfony 2.0 AJAX应用程序中将Doctrine实体编码为JSON?的更多相关文章

  1. ios – 我可以使用AVCaptureSession将AAC流编码到内存吗?

    解决方法我最后向Apple寻求建议.似乎AVCaptureSession抓住了AAC硬件编码器,但只允许您使用它直接写入文件.您可以使用软件编码器,但您必须专门询问它而不是使用AudioConverterNew:同当然,软件编码器会占用cpu资源,但会完成工作.

  2. ios – NSString cString已被弃用.什么是替代品?

    我有另一个新手问题.我写了一段代码,将Nsstring转换为NSMutableData,以模拟一个webService结果.但事实证明,cString已被弃用.你可以帮我更换吗?这是我的代码解决方法>从字符串获取原始字节.>获取UTF8编码中这些字节的长度.>使用dataWithBytes:length:方法创建NSData对象.

  3. ios4 – xcode上的奇怪错误:解析问题Unknow类型名称’plementation’

    在线上:Xcode4说:错误解析问题UnkNow类型名称’plementation’之后有很多解析问题.但该项目在iPhone上工作.我真的不知道是什么…id=27对于我自己的项目,我用TextWrangler打开了违规文件,并用“Western”编码重新保存它们,到目前为止,还没有从LLVM/Clang得到任何进一步的问题.

  4. ios – 如何删除/解码URL百分比编码?

    我想要一个url并将其转换成更易读的格式.例如我有以下链接:我拿走了不必要的部分,并留下了“Sándor_Font”作为Nsstring.有没有什么方式将它转换成“SándorFont”,而不必输出每一个特殊字符的组合并替换字符串的每个部分?为了演示如何使用它,我写了以下示例代码:最后我要标签说“SándorFont”不是“Sándor_Font”.谢谢!

  5. 为swift编码引入map()和flatMap(), map those arrays

    ,一旦将一个不合法的值赋给item.url(NSURL!于是我们想到了使用guard语句的安全操作,如果出现了异常数据,我们就返回一个nil的ListItem对象,去避免返回一个残缺的ListItem对象,同时避免了crash。使用flatMap()好了,这时候flatMap()就来解决这个问题了。flatMap()与map()其实非常相似,map()的规则是T->U,而flatMap()的规则是T->U?,而且如果转换的结果是nil的话,flatMap()是不会将其添加到输出的array中的。因此可以说

  6. 使用Swift快速查看Unicode编码

    Swift中的String完全支持Unicode,它可以使用一个Unicodescalar来构造一个字符串。Unicode编码表很大,查询时有一定的困难。Swift有一个对应的数据类型,UnicodeScalar,可以直接打印其字符。变量start指定了Unicodescalar的起始范围,counts指定要打印10个。hex存有转换为大写十六进制的Unicodescalar的值。在print函数中,先将0x1F493传入UnicodeScalar类,以构造一个UnicodeScalar实例,然后将其按指

  7. Swift3.0语言教程删除字符与处理字符编码

    Swift3.0语言教程删除字符与处理字符编码Swift3.0语言教程删除字符Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除。importFoundationvara=Nsstringprintvarb:CharacterSet=NSCharacterSet.whitespacesAndNewlinesasCharacterSetprint//去除空格和回车运行结果如下:删除前:Hello删除后:HelloSwift3.0语言教程处理字符编码

  8. Alamofire 4.0 迁移指南

    原文:Alamofire4.0MigrationGuide作者:cnoon译者:kemchenj译者注:最近打算把公司项目迁移到Swift3.0,顺手把Alamofire4.0的迁移指南翻译了,之前虽然读过一部分源码,但还是看到了很多新东西,新的Adapter和Retrier我都打算用到项目里,希望大家看完也能够有收获.Alamofire4.0是Alamofire最新的一个大版本更新,一个基于Sw

  9. 如何在swift中将字符串编码为base64

    我想将一个字符串转换为base64。我在几个地方发现相同的答案,但它不工作了swift。我相信答案可能工作在以前的Xcode不是Xcode6.2。有人可以请指导我这样做在Xcode6.2?但它不工作在Xcode6.2ref:http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html我没有安装6.2,但我不认为6.3在这方面有什么不同:dataUsingEncoding返回一个可选的,所以你需要解包。NSDataBase64E

  10. 如何在swift中使用NSCoder编码枚举?

    背景我试图使用NSCoding协议编码一个字符串样式的枚举,但我遇到错误转换和返回从字符串。解码和编码时,我得到以下错误:字符串不能转换为Stage额外参数ForKey:在调用码您需要将枚举转换为和从原始值。在Swift1.2中,这将是这样:Swift1.1,使用as而不是!!Swift1.0使用toRaw()和fromraw()像这样:

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到<input>中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部