2015-09-10 45 views
0

我有一個類,我想序列化,但exclude一個公共屬性。到目前爲止,我嘗試@Exclude但我沒有工作(請參見結果)。JMS序列化程序排除公共屬性

任何想法如何解決這個問題?

實體

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年9月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年9月11日09(更新12) - >配置

  1. 加入"jms/serializer-bundle": "^1.0"作曲家和運行更新
  2. 添加new JMS\SerializerBundle\JMSSerializerBundle()AppKernel
  3. 添加jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategyparameters.yml
  4. 然後用它作爲序列化

回答

2

試試你是否正確包含它:

use JMS\Serializer\Annotation as JMS; 

,然後用它喜歡:

@JMS\Exclude(); 

在你的註釋。

以及確保您的班級使用@ExclusionPolicy(「none」)註釋(請參閱http://jmsyst.com/libs/serializer/master/reference/annotations)。

你可以反過來做,特別是@Expose,而類用@ExlucsionPolicy(「all」)註釋。

確保在重新測試之前清理緩存。

+0

仍然無法使用! – lony

+0

請看我更新的回答 – LBA

+0

我試過'試用2015-09-10 18'版本,但還是沒有成功! – lony

相關問題