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

Атрибут SerializedPath

Атрибут SerializedPath вешается на свойство класса и указывает путь к этому свойству внутри вложенного массива или объекта. Первым параметром передаётся строка пути в формате [key][nestedKey]. При сериализации значение свойства будет помещено по указанному пути, а при десериализации - извлечено из него.

Синтаксис

#[SerializedPath(path)]

Пример

Давайте сериализуем объект с вложенной структурой. Свойство name должно попасть внутрь ключа user, а свойство age - внутрь user и затем info:

<?php namespace App\Entity; use Symfony\Component\Serializer\Attribute\SerializedPath; class Article { #[SerializedPath('[user][name]')] public string $name = 'abcde'; #[SerializedPath('[user][info][age]')] public int $age = 25; } ?>

Теперь применим сериализатор к объекту:

<?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(); $res = $serializer->serialize($article, 'json'); return new Response($res); } } ?>

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

{"user":{"name":"abcde","info":{"age":25}}}

Пример

Давайте выполним обратную операцию - десериализуем JSON в объект. Атрибут SerializedPath автоматически извлечёт значения из вложенных ключей:

<?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 = '{"user":{"name":"abcde","info":{"age":25}}}'; $article = $serializer->deserialize($json, Article::class, 'json'); return new Response($article->name . ' ' . $article->age); } } ?>

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

"abcde 25"

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

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