繁体   English   中英

序列化程序将忽略使用另一个序列化属性的属性

[英]Serializer ignores properties that use another serialized property

我正在使用默认的序列化程序在asp.net中的终结点上进行序列化并返回一些数据。

正在使用的应用程序正在更改属性名称之间进行转换(换句话说,一些现有的应用程序正在使用诸如... Vat之类的名称;而较新的应用程序正在使用... Tax之类的名称。因此,我暂时需要在响应中同时使用两个名称,直到这些更改完成。

返回类型为IList。

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

但是,当我在提琴手中检查响应时,产品的json列表中仅存在PriceIncVat属性。

我想不出任何原因,以上这些都不起作用。 我在与PriceIncTax同时添加了TaxCode并将其返回,因此我知道端点的代码是最新的。

在新的客户项目的客户端,我们有:

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

这里很困惑。

串行器假定您将需要在一段时间后反序列化数据。 因此,默认情况下,仅考虑具有getter setter的属性。

使用DataContractJsonSerializer ,可以使用SerializeReadOnlyTypes属性(尽管名称颇具误导性)来打开只读属性的SerializeReadOnlyTypes

旁注:检出Json.NET序列化程序 ,它提供更多选项并更好地控制(反序列化)过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM