2015-08-17 44 views
0

我正在使用JMS序列化程序包來序列化和反序列化restful api中的數據。我有以下情形:如何禁用自動轉換對象屬性?

實體:

/** 
* Settings 
* 
* @ORM\Table(name="user_settings") 
* @ORM\Entity 
* 
* @JMS\ExclusionPolicy("none") 
* @JMS\AccessType("public_method") 
*/ 
class Settings 
{ 
    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="search", type="boolean") 
    * 
    * @JMS\Groups({"get", "update"}) 
    */ 
    private $search; 
} 

我已經配置JMS使用學說對象的構造函數。

當我做一個POST和數據deserialise進入設置對象,它的工作原理,但在這樣的場景:

{"id":5, "search":"string"} 

它會自動轉換爲字符串「串」成一個布爾值。我相信這與教條有關。如果我將ORM列註釋修改爲type =「string」,則不會發生轉換,這是我想要的,但我想保留type =「boolean」。

結合當前形勢,我無法驗證的對象,並說,「弦」是不是一個有效的價值,因爲它被強制轉換爲布爾之前,我可以做對象的任何驗證。

如果您需要進一步的解釋,請讓我知道,我會很感激你的幫助。

回答

0

我找到了解決方案。

但是,我沒有找到捆綁本身的任何配置的可能性,但它是可以覆蓋以下參數:

<parameter key="jms_serializer.json_deserialization_visitor.class">MyBundle\CoreBundle\Serializer\JsonDeserializationVisitor</parameter> 

默認GenericDeserializationVisitor使用像visitBoolean(),和鑄造方法布爾類型爲布爾值,這是我的情況。

相關問題