2013-02-13 34 views
11

seri hale Asp.net JSON (JSON.NET kullanarak) veya XML nesne serileştirir zaman değişim sınıf adı ben, bir ürününASP.net Web API:

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

için bir Veri Transferi Nesne sınıf var ProductDTO nesnesini üretir.

Ancak, ben niteliklerin çeşit kullanarak, ProductDTO den Product için, seri hale getirme sırasında adını değiştirmek istiyorum:

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

Bu nasıl yapabilirim?

+0

Ürün örneği JSON'a serileştirildiğinde ProductDTO adı nasıl bulunur? JSON, her şeyden önce yazılmamış ve bir örneği JSON.NET ile seri hale getirmeye çalıştığımda, sınıf adı mevcut değil. – aknuds1

cevap

16

göremiyorum ama XML konusunda size mümkün olmalıdır özellikle Name özellik aracılığıyla, DataContractAttribute aracılığıyla tipi adını kontrol eder: ASP.NET Web API ile varsayılan XML seri hale getirici DataContractSerializer çünkü

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 alakalıdır. DataContractSerializer, seri hale getirilmiş sınıflara uygulanan DataContractAttribute ve seri hale getirilmiş sınıf üyelerine uygulanan DataMemberAttribute aracılığıyla yapılandırılmıştır.

+1

"JSON serileştirilmiş verilere sınıf adı" hakkında: haklısın, JSON sınıf adını çıkarmıyor, bu sadece XML için. – Catalin

+0

@RaraituL Tamam, umarım şimdi sizin için çalışıyoruz :) – aknuds1

3

bir seçenek bunun için varsayılan .Net Serialization attributes kullanmaktır: sınıf adı JSON seri hale getirilmiş verileri dönüştürebilmek neden

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