Почему JMS меняет мои логические значения Doctrine Entity?

Это первый раз, когда мне нужно задать вопрос — я обычно нахожу ответ ..

Я могу преобразовать сущность Doctrine в и из JSON с помощью JMS Serializer. Моя единственная проблема заключается в том, что при десериализации из JSON обратно к сущности, любые ложные логические значения: "boolean_value":false в JSON будет установлен как true в Учении Сущности.

Я сузил его до Сериализатора JMS. Данные изменяются в этом коде.

public function toEntity($entity_name, $input,  $inputFormat = 'json') {
// $input is a json string where "boolean_value":false
$serializer = SerializerBuilder::create()->build();
$entity = $serializer->deserialize($json, $entity_name, $inputFormat);
// the output entity's $boolean_value is now true
// $entity->getBooleanValue() === true
return $entity;
}

Позвольте мне знать, если вам нужно что-нибудь еще.

0

Решение

Как оказалось, json_decode не преобразует строковые значения ‘true’ или ‘false’ в true или же false, поэтому код проверял, было ли строковое значение истинным | ложным.

PHP: логическое значение

Я обновил свой метод toEntity, чтобы исправить эту проблему.

public function toEntity($entity_name, array $input, $inputFormat = 'json') {
foreach ($input as $k => $v) {
if ($v == 'true' || $v == 'false') {
$input[$k] = filter_var($v, FILTER_VALIDATE_BOOLEAN);
}
}
$input = json_encode($input);
$serializer = SerializerBuilder::create()->build();
$entity = $serializer->deserialize($input, $entity_name, $inputFormat);
return $entity;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector