РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
982 of 1361 menu

Атрибут SerializedName

Атрибут SerializedName вешается на свойство класса и позволяет указать имя, которое будет использоваться при преобразовании объекта в массив (сериализации) и обратно (десериализации). Первым параметром передаётся строка с новым именем поля. Если атрибут не указан, компонент Serializer использует имя самого свойства.

Синтаксис

#[SerializedName(name)]

Пример

Давайте создадим класс сущности и укажем для свойства createdAt альтернативное имя 'created_at':

<?php namespace App\Entity; use Symfony\Component\Serializer\Attribute\SerializedName; class Article { #[SerializedName('created_at')] public \DateTimeInterface $createdAt; public string $title; } ?>

Пример

Давайте сериализуем объект с атрибутом SerializedName и посмотрим на результат:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Serializer\SerializerInterface; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $article = new Article(); $article->title = 'article'; $article->createdAt = new \DateTime('2024-01-01'); $res = $serializer->serialize($article, 'json'); return new Response($res); } } ?>

Результат выполнения кода:

{"created_at":"2024-01-01T00:00:00+00:00","title":"article"}

Как видите, в JSON-строке поле называется 'created_at', а не createdAt.

Пример

Давайте выполним обратное преобразование - десериализуем JSON в объект:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Serializer\SerializerInterface; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $json = '{"created_at":"2024-01-01T00:00:00+00:00","title":"article"}'; $article = $serializer->deserialize($json, Article::class, 'json'); return new Response($article->createdAt->format('Y-m-d')); } } ?>

Результат выполнения кода:

2024-01-01

Компонент Serializer нашёл поле 'created_at' в JSON и записал его значение в свойство createdAt объекта.

Смотрите также

  • класс Serializer,
    который выполняет сериализацию и десериализацию
  • метод serialize,
    который превращает объект в строку формата
  • метод deserialize,
    который превращает строку формата в объект
  • атрибут Groups,
    который задаёт группы для сериализации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить