如果特定组正在序列化,则 JMS @Discriminator 文件不会出现
JMS @Discriminator filed doesn't appear if specific group is serializing
我正在使用 Symfony 2.8、FOSRestBundle 和 JMSSerializerBundle。
问题
当我序列化实体 Citizen
的特定组(以下示例中的 "api" 组)时,Document
实体的鉴别器字段 type
没有出现在序列化模型中。
学说实体
文件:
namespace MyBundle\Entity;
use JMS\Serializer\Annotation as JMS;
…
/**
* @JMS\Discriminator(field = "type", map = {
* "doc1" = "MyBundle\Entity\Document1",
* "doc2" = "MyBundle\Entity\Document2"
* })
*/
class Document
…
市民:
class Citizen
{
…
/**
* @var ArrayCollection
*
* @ORM\OneToMany(
* targetEntity="MyBundle\Entity\Document",
* cascade={ "PERSIST", "REMOVE" },
* orphanRemoval=true,
* mappedBy="citizen"
* )
*
* @JMS\Groups({"api"})
*/
private $documents;
…
我得到的
{
…
"documents": [
{
"number": "000000",
"date": "01.01.1970",
"serial": "0000",
"place": ""
}
],
…
}
我需要什么
{
…
"documents": [
{
"type": "doc1",
"number": "000000",
"date": "01.01.1970",
"serial": "0000",
"place": ""
}
],
…
}
如果我删除特定的序列化组,那么 type
字段会出现在序列化输出中。
提前致谢
刚在 github 上找到 issue。
目前看来,需要 Default
组的解决方法,请参阅 lordelph's comment
我正在使用 Symfony 2.8、FOSRestBundle 和 JMSSerializerBundle。
问题
当我序列化实体 Citizen
的特定组(以下示例中的 "api" 组)时,Document
实体的鉴别器字段 type
没有出现在序列化模型中。
学说实体
文件:
namespace MyBundle\Entity;
use JMS\Serializer\Annotation as JMS;
…
/**
* @JMS\Discriminator(field = "type", map = {
* "doc1" = "MyBundle\Entity\Document1",
* "doc2" = "MyBundle\Entity\Document2"
* })
*/
class Document
…
市民:
class Citizen
{
…
/**
* @var ArrayCollection
*
* @ORM\OneToMany(
* targetEntity="MyBundle\Entity\Document",
* cascade={ "PERSIST", "REMOVE" },
* orphanRemoval=true,
* mappedBy="citizen"
* )
*
* @JMS\Groups({"api"})
*/
private $documents;
…
我得到的
{
…
"documents": [
{
"number": "000000",
"date": "01.01.1970",
"serial": "0000",
"place": ""
}
],
…
}
我需要什么
{
…
"documents": [
{
"type": "doc1",
"number": "000000",
"date": "01.01.1970",
"serial": "0000",
"place": ""
}
],
…
}
如果我删除特定的序列化组,那么 type
字段会出现在序列化输出中。
提前致谢
刚在 github 上找到 issue。
目前看来,需要 Default
组的解决方法,请参阅 lordelph's comment