15

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

public class ProductDTO
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    // Other properties
}

当 Asp.net 以 JSON(使用JSON.NET)或 in序列化对象时XML,它会生成ProductDTO对象。

但是,我想在序列化过程中使用某种属性从ProductDTOto更改名称:Product

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

我怎样才能做到这一点?

4

2 回答 2

18

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

于 2013-02-13T11:15:01.390 回答
3

一个选项是为此使用默认的.Net 序列化属性

[DataContract(Name = "Product")]
public class ProductDTO
{
    [DataMember(Name = "ProductId")]
    public Guid Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    // Other properties
}
于 2013-02-13T11:12:46.677 回答