DateTimeInterface
라는 유형 필드 를 포함하는 엔터티가 있으며 completedAt
JSON 개체를이 엔터티 개체로 역 직렬화하려고합니다.
나는 시도 DateTimeNormalizer
하고 ObjectNormalizer
, 그러나 그들은 모두 말을 나에게 오류를 준 내가 DateTime 개체로하지 할당 문자열 / 배열 할 수 있습니다.
예를 들어이 엔티티가 있습니다.
class Task
{
private $id;
private $name;
/**
* @var DateTimeInterface
*/
private $completedAt;
}
PHPUnit을 사용하여 테스트에서 JSON 객체를 만드는 방법,
$rawData = json_encode([
'name' => 'test-task',
'completedAt' => Carbon::now()->toRfc3339String(),
// I tried some other formats here, such as datetime array, datetime string, etc.
]);
내 컨트롤러에서 이것을 시도했습니다 (실제 코드가 아닌 테스트입니다).
public function update(Request $request, Task $task, SerializerInterface $serializer): Response
{
$task = new Task();
$task->setName('test');
$task->setCompletedAt(Carbon::now()->toDateTime());
$json = $serializer->serialize($task, 'json');
$serializer = new Serializer([new ObjectNormalizer(), new DateTimeNormalizer()], [new JsonEncoder()]); // array of needed normalizer
var_dump($serializer->deserialize($json, Task::class, 'json'));
}
이 오류가 발생했습니다.
NotNormalizableValueException 속성 경로 "completedAt"에 지정된 "DateTimeInterface", "string"유형의 인수가 필요합니다.
여러 노멀 라이저를 사용하여 JSON 객체를 역 직렬화하려면 어떻게해야합니까?
이 질문에 대한 답변에 감사드립니다 : Symfony 3.2의 임베디드 객체로 json 역 직렬화- "Acme \ StoreBundle \ Document \ Gps", "array"유형의 예상 인수
Symfony 문서를 따라 : https://symfony.com/doc/current/components/serializer.html#recursive-denormalization-and-type-safety
이 패키지를 설치하지 않은 것으로 나타났습니다 : symfony / property-info
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다