首页 > 解决方案 > Symfony 序列化程序返回字符串而不是浮点数

问题描述

Symfony 序列化器组件如何配置为规范化对象(实体)的浮点属性?

详细地说:taxRate一个学说实体的属性被映射到一个 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 端将字符串转换为 Float 的解决方案。我的应用程序想断言该属性是 NULL 或 Float 值。

如何才能做到这一点?

标签: phpjsonsymfonyserialization

解决方案


感谢评论,我认为这个问题不是很清楚/可以删除。

序列化过程很好,它是来自 Doctrine 的映射,我没有做对。

完全没问题,DECIMAL Doctrine/MySQL 类型映射到 PHP 字符串。DECIMAL 旨在保证数值的精度。PHP 的浮点类型不能保证相同的精度。


推荐阅读