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

本文关键字:序列化 net Web API ASP | 更新日期: 2023-09-27 17:59:12

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

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
}

我该怎么做?

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

我不明白为什么类名应该包含在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是DataContractSerializer。DataContractSerializer是通过应用于序列化类的DataContractAttribute和应用于序列化的类成员的DataMemberAttribute配置的。

一个选项是使用默认值。此的Net序列化属性:

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