Symfony2 框架序列化工具的使用(一)
在 config.yml 当中:
framework: serializer: ~
这时将会开启一个叫做 serializer的服务,用法:
// 假如在某个controller action里,有一个 $user 对象:$json = $this->get('serializer')->serialize($user, 'json');// 或者可以只normalize成一个数组$userData = $this->get('serializer')->normalize($user);
一般来说,json 数据的 key 都是 snake_case 的风格,而默认 serialize 出来的是 camelCase 的,当然框架的开发者们早就做好了准备,我们需要做的只是再修改一下配置:
framework: serializer: name_converter: serializer.name_converter.camel_case_to_snake_case
Symfony2 甚至提供了缓存的选项,并且在 config_prod.yml 里已经有相关的配置了,只不过默认被注释掉了而已:
framework: serializer: cache: serializer.mapping.cache.apc
如果看过 Symfony Serializer Component 的 文档,应该知道序列化组件支持定义 group,什么意思呢?比如如下的代码:
use Symfony\Component\Serializer\Annotation\Groups; class User{ /** * @Groups({"group1"}) */ public $name; ...}
如果序列化的时候使用 $serializer->normalize($user, 'json', ['groups' => ['group1']])指定只获取 group1 的属性,那么只有 name 属性会被暴露在接口的结果里。
指定 group 可以使用 yaml 和 xml 以及 annotation,然而 annotation 默认是关闭的,但我们可以通过以下配置打开:
framework: serializer: enable_annotations: true
这一篇文章只是简单介绍 Symfony2 框架序列化工具的正确打开方式,但序列化的工作远不止如此。框架默认使用 ObjectNormalizer 来获取对象的属性值(ObjectNormalizer 使用的是 Symfony PropertyAccess Component),在没有特殊要求的情况下已经可以很好的工作,下一章将告诉大家,如何使用 GetSetMethodNormalizer ,也就是只通过对象的 getter/hasser/isser 来暴露对象属性值的方式,以及添加更多的自定义 Normalizer 的方式。
上一篇: 数据库设计经验谈
推荐阅读
-
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
-
在Python的Django框架中simple-todo工具的简单使用
-
使用Python的Twisted框架实现一个简单的服务器
-
一款把手机或平板电脑变成无线鼠标、键盘的工具软件:WiFi Mouse使用步骤
-
使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
-
ai怎么使用螺旋线工具制作一个颜色渐变的数字9?
-
Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全
-
Shiro权限管理框架(一):Shiro的基本使用
-
使用Python的Tornado框架实现一个简单的WebQQ机器人
-
Python虚拟环境和包管理工具Pipenv的使用详解--看完这一篇就够了