如何在使用jmsserializerbunlde反序列化json时强制执行布尔类型检查?即我如何禁止输入:
{“boolField”:“false”}
从反序列化和类型转换为布尔值true?
我正在使用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类型更改为string然后使用@PostDeserialize方法将这些字符串转换为布尔值但是有更简洁的方法吗?
答案 0 :(得分:0)
在你的例子中:
$str = '{"boolField": "false"}';
'boolField'是一个字符串,而不是布尔值。
也许
$str = '{"boolField": false}';
表现会更好。
(未测试的)