php – JMSSerializerBundle在JSON中返回双精度字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – JMSSerializerBundle在JSON中返回双精度字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1235字,纯文字阅读大概需要2分钟。
内容图文
![php – JMSSerializerBundle在JSON中返回双精度字符串](/upload/InfoBanner/zyjiaocheng/722/459f16e102e045b9b6e36495d4d2e0eb.jpg)
所以我们在Symfony2项目中使用JMSSerializerBundle为我们的客户生成一些JSON.它正在序列化我们的Doctrine2实体并且像魅力一样工作,但有一个例外.所有双精度/十进制值都是生成的JSON中的字符串,这使客户端感到困惑.
我们的序列化实体看起来像这样,我只在这里粘贴了相关的属性/ getter.
class Offer
{
[...]
/**
* @var double $latitude
*
* @ORM\Column(name="latitude", type="decimal", precision=10, scale=7)
* @Groups("offerlist")
*/
private $latitude;
/**
* @var double $longitude
*
* @ORM\Column(name="longitude", type="decimal", precision=10, scale=7)
* @Groups("offerlist")
*/
private $longitude;
[...]
/**
* Get latitude
*
* @return double
*/
public function getLatitude()
{
return $this->latitude;
}
/**
* Get longitude
*
* @return double
*/
public function getLongitude()
{
return $this->longitude;
}
[...]
}
纬度/经度值显示在JSON中,如下所示:
{
"latitude" : "5.3452",
"longitude" : "54.2312"
}
如何摆脱引号,所以它是JSON中的数字而不是字符串?这应该很简单,但我在docs或网上找不到任何关于这个问题的内容.希望有人能帮到我这里!
解决方法:
纬度和经度列使用的是Doctrine的十进制类型,表示为字符串.
你可以使用Doctrine的双重类型:
/**
* ...
* @ORM\Column(name="latitude", type="double")
*/
private $latitude;
或使用JMSSerializerBundle的@Type annotation:
/**
* ...
* @Serializer\Type("double")
*/
private $latitude;
内容总结
以上是互联网集市为您收集整理的php – JMSSerializerBundle在JSON中返回双精度字符串全部内容,希望文章能够帮你解决php – JMSSerializerBundle在JSON中返回双精度字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。