Это первый раз, когда мне нужно задать вопрос — я обычно нахожу ответ ..
Я могу преобразовать сущность 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;
}
Позвольте мне знать, если вам нужно что-нибудь еще.
Как оказалось, json_decode не преобразует строковые значения ‘true’ или ‘false’ в true
или же false
, поэтому код проверял, было ли строковое значение истинным | ложным.
Я обновил свой метод 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;
}
Других решений пока нет …