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

Cat*_*lin 13 c# asp.net asp.net-mvc serialization

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

public class ProductDTO
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}
Run Code Online (Sandbox Code Playgroud)

当Asp.net在JSON(using JSON.NET)或in中序列化对象时XML,它会生成ProductDTO对象.

不过,我想序列化期间改名字,从ProductDTOProduct,使用某种类型的属性:

[Name("Product")]
public class ProductDTO
{
    [Name("ProductId")]
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

akn*_*ds1 17

我不明白为什么类名应该要把它变成JSON序列化数据,但至于XML,你应该能够通过控制类型名称DataContractAttribute,特别是通过名称属性:

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
}
Run Code Online (Sandbox Code Playgroud)

DataContractAttribute是相关的,因为ASP.NET Web API的默认XML序列化程序是DataContractSerializer.DataContractSerializer通过应用于序列化类的DataContractAttribute和应用于序列化类成员的DataMemberAttribute进行配置.

  • 关于"类名称转换为JSON序列化数据":您说得对,JSON不输出类名,这仅适用于XML. (2认同)