Sam*_*ony 2 rest jms symfony jmsserializerbundle
作为一个简单的例子,我有一个具有以下字段的学说实体
id
name
description
Run Code Online (Sandbox Code Playgroud)
我正在使用JMSSerializerBundle
并且它在大多数情况下运行良好,但是如果我想让序列化数据(Json)包含未完全映射到我的实体的内容怎么办?
例如,如果我只想返回描述的前 50 个字符并且我想将其称为short_description
.
我尝试使用排除策略来@Expose
公开方法,但这不受支持。
我需要经常与许多不同的实体一起做这种事情,我想知道是否有人可以提出一个很好的干净的方法来解决这个问题。
我已经阅读了整个文档,JMSSerializerBundle
并在互联网上寻找解决方案,我可以想出一些解决方案,但生成的代码看起来有点脏。
注释@VirtualProperty
就是您正在寻找的内容(http://jmsyst.com/libs/serializer/master/reference/annotations#virtualproperty)。
例如:
namespace Some\Bundle\Entity;
use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\SerializedName;
class MyEntity
{
private $description;
/**
* @VirtualProperty
* @SerializedName("short_description")
*/
public function getShortDescription()
{
return substr($this->description, 0, 50);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1204 次 |
最近记录: |