Warning: You are browsing the documentation for Symfony 5.2, which is no longer maintained.

Read the updated version of this page for Symfony 5.3 (the current stable version).

Normalizers

5.2 version

Normalizers

Normalizers turn objects into arrays and vice versa. They implement Symfony\Component\Serializer\Normalizer\NormalizerInterface for normalizing (object to array) and Symfony\Component\Serializer\Normalizer\DenormalizerInterface for denormalizing (array to object).

Normalizers are enabled in the serializer passing them as its first argument:

use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;

$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers);

Built-in Normalizers

Symfony includes the following normalizers but you can also create your own normalizer:

  • Symfony\Component\Serializer\Normalizer\ObjectNormalizer to normalize PHP object using the PropertyAccess component;
  • Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer for DateTimeZone objects;
  • Symfony\Component\Serializer\Normalizer\DateTimeNormalizer for objects implementing the DateTimeInterface interface;
  • Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer for DateInterval objects;
  • Symfony\Component\Serializer\Normalizer\DataUriNormalizer to transform SplFileInfo objects in Data URIs;
  • Symfony\Component\Serializer\Normalizer\CustomNormalizer to normalize PHP object using an object that implements Symfony\Component\Serializer\Normalizer\NormalizableInterface;
  • Symfony\Component\Serializer\Normalizer\FormErrorNormalizer for objects implementing the Symfony\Component\Form\FormInterface to normalize form errors;
  • Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer to normalize PHP object using the getter and setter methods of the object;
  • Symfony\Component\Serializer\Normalizer\PropertyNormalizer to normalize PHP object using PHP reflection;
  • Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer for objects implementing the Symfony\Component\Validator\ConstraintViolationListInterface interface;
  • Symfony\Component\Serializer\Normalizer\ProblemNormalizer for Symfony\Component\ErrorHandler\Exception\FlattenException objects
  • Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer to deal with objects implementing the JsonSerializable interface;
  • Symfony\Component\Serializer\Normalizer\UidNormalizer converts objects that implement Symfony\Component\Uid\AbstractUid into strings and denormalizes uuid or ulid strings to Symfony\Component\Uid\Uuid or Symfony\Component\Uid\Ulid.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.