Как применить проверку логического типа при десериализации json с помощью jmsserializerbunlde? то есть, как я могу запретить ввод, например:
{"boolField": "ложь"}
от десериализации и приведения типа к логическому значению 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 на строку, а затем использовать метод @PostDeserialize для преобразования этих строк в логические значения, но есть ли более чистый способ?