Сериализатор Symfony возвращает строку вместо float - PullRequest
0 голосов
/ 15 октября 2018

Как настроить компонент Symfony Serializer для нормализации свойства float объекта (сущности)?

Подробно: свойство taxRate сущности доктрины сопоставляется со значением типа float PHP.И я хотел бы получить ответ от контроллера с представлением JSON, например:

{taxRate:0.19}

Но я получаю

{taxRate:"0.19"}

Определение свойства и аннотации объекта:

class ExampleEntity {
  /**
   * @ORM\Column(type="decimal", precision=3, scale=2, nullable=true)
   * @Groups({"api"})
   */
  protected $taxRate;
}

Контроллер выглядит так:

$serializer = $this->get('serializer');
return new JsonResponse(
  $serializer->normalize(
    $exampleEntity,
    'json',
    [
      'groups' => 'api',
    ]
  )
);

Мне не нравится решение преобразования строки в число с плавающей точкой на стороне JavaScript.Мое приложение хотело бы утверждать, что свойство имеет значение NULL или значение с плавающей точкой.

Как это можно сделать?

1 Ответ

0 голосов
/ 15 октября 2018

Благодаря комментариям, я думаю, что вопрос не очень ясен / может быть удален.

Процесс сериализации в порядке, это отображение из Doctrine, которое я не понял правильно.

Все в порядке, типы DECIMAL Doctrine / MySQL отображаются в строки PHP.DECIMAL разработан, чтобы гарантировать точность для числового значения.Тип float в PHP не может гарантировать одинаковую точность.

...