2014-01-08 99 views
0

我正在使用默認序列化程序序列化並返回一些數據的asp.net中的端點上工作。序列化程序忽略使用另一個序列化屬性的屬性

消費應用程序正在爲屬性更改名稱(換句話說,一些現有應用程序正在使用名稱,如... Vat;而較新的應用程序正在使用...稅務。因此,我需要將這兩個名稱保留在響應的時刻,直到這些更改完成。

返回類型的IList。

public class Product 
{ 
    ... 
    public decimal PriceIncVat { get; set; } 
    public decimal PriceIncTax { get { return PriceIncVat; } } 
    public int TaxCode { get; set; } 
    ... 
} 

然而,當我檢查小提琴手的響應,只有PriceIncVat屬性存在於產品的JSON列表。

我想不出爲什麼上述不行。我在與PriceIncTax同時添加了TaxCode,並將其返回,所以我知道端點的代碼是最新的。

而上,我們有一個新的客戶機項目的客戶端:

public class ProductDto 
{ 
    ... 
    public decimal PriceIncTax { get; set; } 
    public string TaxCode { get; set; } 
    ... 
} 

很困惑在這裏。

+0

Btw。你使用了什麼JSON序列化器? –

+0

默認的 - 我沒有實現我自己的。 – Kev

回答

0

串行器假定您需要一段時間反序列化數據。因此,默認情況下只考慮使用getter 設置器的屬性。

使用DataContractJsonSerializer時,可以使用SerializeReadOnlyTypes屬性打開只讀屬性的序列化(儘管名稱相當具有誤導性)。

備註:檢出Json.NET serializer,它提供了更多的選項和更好的控制(反)序列化過程。

+0

有趣。如果是這樣的話,你知道我可以繞過它嗎 - 例如,是否有一個屬性可以用來標記屬性? – Kev