- .. index::
- single: Serializer
Serializar e desserializar de e para objetos e em formatos diferentes (por exemplo, JSON ou XML) é um tema muito complexo. O Symfony vem com um :doc:`Componente Serializer</components/serializer>`, que lhe fornece algumas ferramentas que você pode aproveitar para sua solução.
Na verdade, antes de começar, familiarize-se com o serializer, normalizadores e codificadores (encoders) lendo :doc:`Componente Serializer</components/serializer>`. Você também deve verificar o JMSSerializerBundle, que expande as funcionalidades oferecidas pelo serializer do núcleo do Symfony.
.. versionadded:: 2.3 O Serializer sempre existiu no Symfony, mas antes do Symfony 2.3, você mesmo precisava construir o serviço ``serializer``.
O serviço serializer
não está disponível por padrão. Para ativá-lo, habilite-o
em sua configuração:
.. configuration-block:: .. code-block:: yaml # app/config/config.yml framework: # ... serializer: enabled: true .. code-block:: xml <!-- app/config/config.xml --> <framework:config> <!-- ... --> <framework:serializer enabled="true" /> </framework:config> .. code-block:: php // app/config/config.php $container->loadFromExtension('framework', array( // ... 'serializer' => array( 'enabled' => true ), ));
Uma vez ativado, o serviço serializer
estará disponível no container
e será carregado com dois :ref:`encoders<component-serializer-encoders>`
(:class:`Symfony\\Component\\Serializer\\Encoder\\JsonEncoder` e
:class:`Symfony\\Component\\Serializer\\Encoder\\XmlEncoder`)
mas não :ref:`normalizers<component-serializer-normalizers>`, ou seja, você
precisará carregar o seu próprio.
Você pode carregar normalizadores e/ou codificadores adicionando tags a eles como :ref:`serializer.normalizer<reference-dic-tags-serializer-normalizer>` e :ref:`serializer.encoder<reference-dic-tags-serializer-encoder>`. Também é possível definir a prioridade da tag, a fim de decidir a ordem de correspondência.
Aqui está um exemplo de como carregar o :class:`Symfony\\Component\\Serializer\\Normalizer\\GetSetMethodNormalizer`:
.. configuration-block:: .. code-block:: yaml # app/config/services.yml services: get_set_method_normalizer: class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer tags: - { name: serializer.normalizer } .. code-block:: xml <!-- app/config/services.xml --> <services> <service id="get_set_method_normalizer" class="Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer"> <tag name="serializer.normalizer" /> </service> </services> .. code-block:: php // app/config/services.php use Symfony\Component\DependencyInjection\Definition; $definition = new Definition( 'Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer' )); $definition->addTag('serializer.normalizer'); $container->setDefinition('get_set_method_normalizer', $definition);
ApiPlatform fornece um sistema de API com suporte aos formatos hypermedia JSON-LD e Hydra Core Vocabulary. Ele é construído com o Framework Symfony e seu componente Serializer. Ele fornece normalizadores personalizados e um encoder personalizado, metadata personalizados e um sistema de cache.
Se você deseja aproveitar todo o poder do componente Serializer do Symfony, verifique como esse bundle funciona.
.. toctree:: :maxdepth: 1 :glob: serializer/*