JMS 序列化程序排除 public 属性
JMS Serializer exclude public properties
我有一个class我想连载,但是exclude
一个public属性。到目前为止,我尝试了 @Exclude
但没有成功(请参阅结果)。
有什么解决这个问题的想法吗?
实体:
class Checkout extends Entity
{
/**
* @Exclude()
*/
public $normalizerCallbacks = [
'a' => 1,
'b' => 2,
];
..........
序列化:
$checkout = $this->getDoctrine()->getRepository('App:Checkout')->find($id);
$serializer = $this->get('jms_serializer');
$data = $serializer->serialize($checkout, 'json');
结果:
{
normalizer_callbacks: {
a: 1
b: 2
}
}
编辑:试用 2015-09-10 18 --> 无效
use JMS\Serializer\Annotation as JMS;
/**
* User
*
* @ORM\Table(name="checkout", options={"collate"="utf8_general_ci"})
* @ORM\Entity
*
* @JMS\ExclusionPolicy("none")
*/
class Checkout extends Entity
{
/**
* @JMS\Exclude();
*/
public $normalizerCallbacks = [
...
编辑:试用 2015-09-11 09(更新 12)--> 配置
- 添加到
"jms/serializer-bundle": "^1.0"
作曲家和 运行 更新
- 将
new JMS\SerializerBundle\JMSSerializerBundle()
添加到 AppKernel
- 将
jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy
添加到parameters.yml
- 然后像Serialize
一样使用它
试试你是否包含正确:
use JMS\Serializer\Annotation as JMS;
然后像这样使用它:
@JMS\Exclude();
在你的注释中。
还要确保您的 class 带有 @ExclusionPolicy("none") 注释(参见 http://jmsyst.com/libs/serializer/master/reference/annotations)。
你也可以反过来做,特别是 @Expose 而 class 是用 @ExlucsionPolicy("all").
注释的
确保在重新测试之前清理缓存。
我有一个class我想连载,但是exclude
一个public属性。到目前为止,我尝试了 @Exclude
但没有成功(请参阅结果)。
有什么解决这个问题的想法吗?
实体:
class Checkout extends Entity
{
/**
* @Exclude()
*/
public $normalizerCallbacks = [
'a' => 1,
'b' => 2,
];
..........
序列化:
$checkout = $this->getDoctrine()->getRepository('App:Checkout')->find($id);
$serializer = $this->get('jms_serializer');
$data = $serializer->serialize($checkout, 'json');
结果:
{
normalizer_callbacks: {
a: 1
b: 2
}
}
编辑:试用 2015-09-10 18 --> 无效
use JMS\Serializer\Annotation as JMS;
/**
* User
*
* @ORM\Table(name="checkout", options={"collate"="utf8_general_ci"})
* @ORM\Entity
*
* @JMS\ExclusionPolicy("none")
*/
class Checkout extends Entity
{
/**
* @JMS\Exclude();
*/
public $normalizerCallbacks = [
...
编辑:试用 2015-09-11 09(更新 12)--> 配置
- 添加到
"jms/serializer-bundle": "^1.0"
作曲家和 运行 更新 - 将
new JMS\SerializerBundle\JMSSerializerBundle()
添加到AppKernel
- 将
jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy
添加到parameters.yml
- 然后像Serialize 一样使用它
试试你是否包含正确:
use JMS\Serializer\Annotation as JMS;
然后像这样使用它:
@JMS\Exclude();
在你的注释中。
还要确保您的 class 带有 @ExclusionPolicy("none") 注释(参见 http://jmsyst.com/libs/serializer/master/reference/annotations)。
你也可以反过来做,特别是 @Expose 而 class 是用 @ExlucsionPolicy("all").
注释的确保在重新测试之前清理缓存。