В настоящее время я работаю над созданием API с фреймворком Symfony. Я достаточно прочитал, чтобы узнать, как использовать компонент Serialization, и создал некоторые пользовательские нормализаторы для моих объектов. Как это в настоящее время работает в:Преобразование JSON в Doctrine Entity в Symfony
JSON -> Array (Decode) -> User Entity (Денормализовать)
Это работает поиск до тех пор, пока содержание запроса было JSON представление пользователя, например:
{
"email": "[email protected]",
"plainPassword": "demouser",
"first_name" : "Demo",
"last_name" : "User"
}
объект пользователя создается с помощью следующего кода в моем контроллере:
$newuser = $this->get('api.serializer.default')->deserialize($request->getContent(), WebsiteUser::class, 'json');
Однако, я хотел бы гнездиться пользователю JSON в собственности «данные» в виде JSON объект, который позволит потребителям передавать дополнительные метаданные с запросом, например:
{
"options": [
{
"foo": "bar"
}
],
"data": [
{
"email": "[email protected]",
"plainPassword": "demouser",
"first_name": "Demo",
"last_name": "User"
}
]
}
Основной вопрос это вызывает то, что десериализации не удается, так как формат JSON изменился.
Единственным решением, которое я рассмотрел до сих пор, является json_decode весь тело запроса, захватить элемент данных этого массива и передать содержимое элемента данных в denormalizer (вместо десериализатора).
Есть ли лучший способ решить эту проблему?