2012-09-29 18 views
7

Basit bir denetleyici eylemi düşünün IEnumerable<BaseType> Get(). Tümü, BaseType türetilen farklı türlerde bir numaralandırma döndürür. Gördüğünüz gibiDevralma ve ASP.NET Web API'sinin JSON biçimlendiricisi

<ArrayOfBaseType> 
    <BaseType i:type="DerivedType1"><A>value</A></BaseType> 
    <BaseType i:type="DerivedType2"><B>value</B></BaseType> 
    <BaseType i:type="DerivedType3"><C>value</C></BaseType> 
</ArrayOfBaseType> 

, türetilmiş sınıfın tipi i:type Özellikte iletilir: istemci XML istediğinde

, sonuçta aşağıdaki gibi bir şeydir. İstemci ancak JSON isterse

, bu bilgiler eksik:

[ 
    {"A":"value"}, 
    {"B":"value"}, 
    {"C":"value"} 
] 

Bu nasıl düzeltmek için?

+3

@downvoter: Bir açıklama olmadan, neyin belirsiz olduğunu bilmeden soruyu düzeltebileceğime inanıyorum. –

cevap

4

yardımcı olacaktır :

config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = 
    TypeNameHandling.Auto; 

Otomatik olarak yeni bir özellik ortaya çıkacakGerektiğinde.

0

aşağıdaki sınıfınızı yazarsanız: aşağıdaki satır eklenmesi gerekir WebApiConfig.cs olarak

: Belki

public class MyClass 
{ 
    // properties here 

    public string IType 
    { 
     get 
     { 
      return this.GetType().Name; 
     } 

     set { } 
    } 
} 

, aşağıdaki değişiklik gereklidir sizi

+0

Gerçekten değil. Gözlerimde bu bir hack. –

+0

Json'un başka bir şekilde var olduğundan emin değilim. – Khurshid