我有一个产品的数据传输对象类
public class ProductDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
// Other properties
}
当Asp.net使用JSON(使用JSON.NET
)或XML
序列化对象时,它会生成ProductDTO
个对象。
但是,我想使用某种属性在序列化期间更改名称,从ProductDTO
更改为Product
:
[Name("Product")]
public class ProductDTO
{
[Name("ProductId")]
public Guid Id { get; set; }
public string Name { get; set; }
// Other properties
}
我该怎么做?
答案 0 :(得分:17)
我无法理解为什么类名应该成为JSON序列化数据,但是对于XML,您应该能够通过DataContractAttribute控制类型名称,特别是通过Name属性:
using System.Runtime.Serialization;
[DataContract(Name = "Product")]
public class ProductDTO
{
[DataMember(Name="ProductId")]
public Guid Id { get; set; }
[DataMember]
public string Name { get; set; }
// Other properties
}
DataContractAttribute是相关的,因为ASP.NET Web API的默认XML序列化程序是DataContractSerializer。 DataContractSerializer通过应用于序列化类的DataContractAttribute和应用于序列化类成员的DataMemberAttribute进行配置。
答案 1 :(得分:3)
选项是使用默认.Net Serialization attributes:
[DataContract(Name = "Product")]
public class ProductDTO
{
[DataMember(Name = "ProductId")]
public Guid Id { get; set; }
[DataMember]
public string Name { get; set; }
// Other properties
}