php - Symfony 序列化程序返回字符串而不是 float

标签 php json symfony serialization

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

详细说明:学说实体的 taxRate 属性映射到 PHP 浮点值。我想从具有 JSON 表示形式的 Controller 做出响应,例如:

{taxRate:0.19}

但是我得到的是

{taxRate:"0.19"}

实体的属性和注解的定义是:

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

Controller 看起来像这样:

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

我不喜欢在 JavaScript 端将字符串转换为 Float 的解决方案。我的应用想要断言该属性为 NULL 或 Float 值。

如何做到这一点?

最佳答案

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

序列化过程没问题,是我没弄对的Doctrine的映射。

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

关于php - Symfony 序列化程序返回字符串而不是 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812594/

相关文章:

php - Doctrine单表继承查询所有实例

php - 如何验证国际化域名

php - 如何指定使用哪种方法(存储和更新)laravel

java - 特殊字符(注册商标、TM-商标、笑脸等)在 UI 上显示不正确

json - 使用 VBA 进行网页抓取(当 HTML <> DOM 时)

java - 将neo4j数据集连接到Web应用程序的最简单方法是?

php - 映射//Entity 和//Entity 彼此不一致 - Symfony2/Doctrine2

php - 如何在 PHP Symfony 4 中获取 POST 全局变量?

php - 使用 LIMIT 组合 2 个 MySQL select 语句

php - 在哪里存储辅助函数?