Normalizers

5.3 version
Symfony 5.3 is backed by JoliCode.

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.