繁体   English   中英

ASP.net Web API:序列化时更改类名

[英]ASP.net Web API: change class name when serializing

我有一个产品的数据传输对象类

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
}

我怎样才能做到这一点?

我不明白为什么类名应该成为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进行配置。

一个选项是使用默认的.Net Serialization属性

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name = "ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}

暂无
暂无

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

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