2011-06-21 21 views

cevap

4

olası yolu private veya internal olarak bu alanları ilan etmektir.

alternatif çözüm DataContractJsonSerializer sınıfının kullanılmasıdır. Bu durumda, sınıfınıza DataContract özniteliğini eklersiniz. Serileştirmek istediğiniz üyeleri DataMember özniteliği ile denetleyebilirsiniz - işaretli tüm üyeler serileştirilir ve diğerleri değil. aşağıdaki gibi

Sen toJSON yöntemi yeniden olmalıdır:

public string ToJson() 
    { 
     DataContractJsonSerializer jsonSerializer = 
       new DataContractJsonSerializer(typeof(<your class name>)); 
     MemoryStream ms = new MemoryStream(); 
     jsonSerializer.WriteObject(ms, this); 
     string json = Encoding.Default.GetString(ms.ToArray()); 
     ms.Dispose(); 
     return json; 
    } 
2

kontrol dışarı JavaScriptConverter sınıfı. Belirli nesne türleri için serileştirme/serileştirme sürecini özelleştirmek için register converters. Daha sonra, özgün sınıfta herhangi bir değişiklik yapmadan istediğiniz özellikleri ekleyebilirsiniz.

+0

Güzel, ancak başka bir dize üyesi olmadığında dizge üye serileştirilmesini istiyorsanız yine de zor olacağım. sağ? –

+0

Temel olarak anahtar/değer çiftlerinin bir sözlüğünü döndürürsünüz, bu nedenle özel dönüştürücünüzün yalnızca diğerini içermeyecek şekilde olması gerekir. Her üyeyi kendi değerine göre (veya değil) serileştirebilirsiniz. – MikeWyatt

22

ScriptIgnoreAttribute'u kullanın.

+2

+1. Bu doğru cevap. Alt taraftaki cevapları okudum ya da bunu özlemiş olmama sevindim. Güzel çalışır. – gilly3

+0

yalnızca .NET 4.5 :( – karaxuna

+1

@karaxuna için çalışır, 3.5'e kadar desteklenir (JavascriptSerializer başlatıldığında) – xr280xr

İlgili konular