Хобрук: Ваш путь к мастерству в программировании

Как применить проверку логических типов в json с помощью jmsserialize

Как применить проверку логического типа при десериализации 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 для преобразования этих строк в логические значения, но есть ли более чистый способ?


Ответы:


1

В вашем примере:

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

'boolField' - это строка, а не логическое значение.

Может быть

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

будет работать лучше.

(Не проверено)

21.07.2017
  • К сожалению, я не контролирую систему, генерирующую json, поэтому я не могу внести изменения. В итоге я использовал метод PostDeserialize для исправления логических строковых значений. 15.08.2017
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..