gpt4 book ai didi

反序列化时的 symfony 序列化器类型转换

转载 作者:行者123 更新时间:2023-12-03 20:26:27 27 4
gpt4 key购买 nike

假设我有一个类

class MyObj
{
/** @var int */
private $myProp;

public function getMyProp(): int
{
return $this->myProp;
}

public function setMyProp(int $myProp): self
{
$this->myProp = $myProp;

return $this;
}
}

如果我想反序列化以下
$body = '{"myProp": "4"}';
$myObj = $serializer->deserialize($body, MyObj::class, 'json');

我显然收到一个错误,说类型不匹配。

The type of the "myProp" attribute for class "MyObj" must be one of "int" ("string" given).



我可以配置序列化程序来对这些值进行类型转换吗?

最佳答案

ObjectNormalizer 有一个选项可以在非规范化时禁用类型强制,您可以通过上下文参数传递该选项。

# ... 
$myObj = $serializer->deserialize(
$body,
MyObj::class,
'json',
['disable_type_enforcement' => true]
);
# ...
由于您在 setter 中使用类型提示,php 将尝试将给定值转换为 int。

关于反序列化时的 symfony 序列化器类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60337769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com