gpt4 book ai didi

json - 如何使用 jmsserialize 对 json 强制执行 bool 类型检查

转载 作者:行者123 更新时间:2023-12-01 06:22:41 25 4
gpt4 key购买 nike

如何在使用 jmsserializerbunlde 反序列化 json 时强制执行 bool 类型检查?即我如何禁止输入,如:

{"boolField": "false"}

从反序列化和类型转换为 bool 真?

我正在使用 jmsserializerbundle 和 symfony2 验证库。

我的模型字段注释:

/**
* @var bool
* @Assert\NotNull()
* @Assert\Type(type="bool")
* @Type(name="boolean")
* @SerializedName("boolField")
*/
private $boolField;

我正在反序列化然后运行验证。
 $str = '{"boolField": "false"}';
$object = $serializer->deserialize($str, TestModel::class, 'json');
$validator->validate($object);
print_r($object)


TestModel Object
(
[boolField:TestModel:private] => 1
)

这不会返回任何错误,但具有将 $boolField 设置为 true 的模型的副作用。

如果我删除注释@Type,它不会反序列化。

我可以将 jmserialize 类型更改为字符串,然后使用 @PostDeserialize 方法将这些字符串转换为 bool 值,但有更简洁的方法吗?

最佳答案

在你的例子中:

$str = '{"boolField": "false"}';

'boolField' 是一个字符串,而不是一个 bool 值。

也许
$str = '{"boolField": false}';

会表现得更好。

(未经测试)

关于json - 如何使用 jmsserialize 对 json 强制执行 bool 类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811828/

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