如何使用序列化器

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何使用序列化器

对对象和不同格式(例如JSON或XML)进行序列化和反序列化是一个非常复杂的主题。欧宝娱乐app下载地址Symfony带有一个序列化器组件,它为您提供了一些可以用于解决方案的工具。

实际上,在开始之前,请通过阅读序列化器组件

激活序列化器

序列化器默认情况下,该服务不可用。要打开它,请在配置中激活它:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml框架:#……序列化器:启用:真正的

使用序列化器服务

启用后,序列化器Service可以被注入到你需要的任何服务中,也可以像下面这样用在控制器中:

12 3 4 5 6 7 8 9 10 11 12 13 14
/ / src / AppBundle /控制器/ DefaultController.php名称空间AppBundle控制器使用欧宝娱乐app下载地址FrameworkBundle控制器控制器DefaultController扩展控制器公共函数indexAction()序列化器->get (“序列化器”);/ /……}}

添加标准化器和编码器

启用后,序列化器服务将在容器中可用,并将装入两个编码器JsonEncoder而且XmlEncoder)及ObjectNormalizer标准化者

您可以通过标记为来加载归一化器和/或编码器serializer.normalizer而且serializer.encoder.还可以设置标记的优先级以决定匹配顺序。

下面是一个关于如何加载GetSetMethodNormalizer

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / services.yml服务:get_set_method_normalizer:类:欧宝娱乐app下载地址Symfony \组件\ \标准化者\ GetSetMethodNormalizer进行序列化公众:标签:-名称:serializer.normalizer

使用序列化组注释

启用序列化组注释配置如下:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml框架:#……序列化器:enable_annotations:真正的

接下来,添加@Groups注释并选择在序列化时使用哪些组:

1 2 3 4 5
序列化器->get (“序列化器”);json序列化器->序列化(someObjectjson的数组“组织”= >数组“group1”)));

除了@Groups注释,Serializer组件也支持Yaml或XML文件。当这些文件被存储在以下位置之一时,会自动加载:

  • serialization.ymlserialization.xml资源/ config /包的目录;
  • 所有* .yml而且* . xml文件资源/ config /序列化/包的目录。

启用元数据缓存

Serializer组件使用的元数据(例如组)可以被缓存以增强应用程序性能。实现学说\常见\缓存\缓存接口可以使用。

服务杠杆APCu(和APC for PHP < 5.5)是内置的。

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config_prod.yml框架:#……序列化器:缓存:serializer.mapping.cache.apc

启用名称转换器

2.8

name_converter选项在Symfony 2.8中引入。欧宝娱乐app下载地址

使用名字转换器服务可以在配置中使用name_converter选择。

内置的CamelCase到snake_case名称转换器可以通过使用serializer.name_converter.camel_case_to_snake_case值:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / config.yml框架:#……序列化器:name_converter:“serializer.name_converter.camel_case_to_snake_case”

进一步使用序列化器

ApiPlatform提供API系统支持JSON-LD而且Hydra核心词汇超媒体格式。它构建在Symfony Framework及其Ser欧宝娱乐app下载地址ializer组件之上。它提供了自定义规范化器、自定义编码器、自定义元数据和缓存系统。

如果您想充分利用Symfony Serializer组件的全部功能,请看看这个包是如何工作的欧宝娱乐app下载地址。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。