2013-06-27 23 views
7

Web api denetleyici sınıfı var ve web api denetleyicisinden bir WSDL'den oluşturulan bir proxy sınıfında bir yöntem çağırıyorum, ve WSDL'de tanımlanan türde bir nesne döndürüyorum vekil sınıfı.asp web api json serialization özel mülkler döndürüyor

<companyField>700</companyField> 
<soldBPField>999000353</soldBPField> 
<fromDateField>01-01-2012</fromDateField> 
<toDateField>01-01-2013</toDateField> 

döndürdü json geçerli:

ancak xml/json dönen özel üyeler

private string companyField; 

    private string soldBPField; 

    private string fromDateField; 

    private string toDateField; 

    private long succStatusField; 

ve iade xml olduğunu

vekil sınıfının özel üyelerini içeren ayrıca benzer

Global.asax dosyasındaki xml biçimlendiricisini ollows: Bu XML değişti

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter; 
xml.UseXmlSerializer = true; 

döndü:

<company>700</company> 
<soldBP>999000353</soldBP> 
<fromDateField>01-01-2012</fromDate> 
<toDate>01-01-2013</toDate> 

ama json hala

herhangi biri bu

ile bana yardımcı olabilir özel değişkenlerin adını içerir döndü
+0

nasıl özel özelliklere sahip bir WSDL oluşturmuyor? WSDL'de yalnızca genel özellikler normal olarak dışa aktarılır. –

+0

Bu alanları bir yerlerde açığa çıkaran genel özellikler olmadığından emin misiniz? Belki bir “kısmi” sınıf ve başka bir “kısmi” onları açığa çıkarıyor mu? Intellisense bu özelliklerin var olduğunu gösteriyor mu? –

+0

gibi özel mülkleri açığa kamu özellikleri vardır: property companyField, şirkete işaret eden bir alıcı ve belirleyici olan public property şirketi aracılığıyla maruz kalmaktadır. # Intellisense, private property companyField'i göstermez. –

cevap

12

Tipleriniz [Serializable] olarak işaretlenmiş mi? Seri hale getirilebilir, serileştiricinin tüm alanları serileştirmesi gerektiği anlamına gelir - özel veya kamusal. niteliğini tanımasını JSON biçimlendirici durdurmak için Serializable kaldırmak yoksa bu çizgiyi kullanmayı deneyin:

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver(); 
+0

teşekkürler @Youssef Moussaoui Yukarıdaki ayar yardımcı oldu: neyin yanlış gittiğini açıklayabilir misiniz –

+0

Seri hale getirilebilir işleri kaldırma ve yapılandırma ayarlarını yapar. Yapılandırmanın yaptıklarının nedenini bilmek ve yapılandırmayı bu şekilde değiştirmenin olumsuz sonuçları olup olmadığını bilmek güzel olurdu. –

İlgili konular