2011-05-06 98 views
1

我有一個B類從A類繼承使用JavaScriptSerializer如何在子類的某些屬性

Class B:A 
{ 
    public string Prop1{get;set} 
    public string Prop2{get;set} 
    public string Prop3{get;set} 
} 

我想序列化(JSON)在B類的某些屬性說PROP1和PROP2和沒有在類A. 我正在使用JavaScriptSerializer和這個序列化A和B. 我試圖設置遞歸限制爲1,但會引發錯誤。我不允許編輯類A

請幫

回答

5

我想在這種情況下定義DTO類:

public class Foo 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
} 

然後使用AutoMapperB實例映射到Foo。最後,我會JSON序列化由AutoMapper返回的Foo實例。這樣我就可以完全控制序列化的內容。

另一種可能性是使用匿名對象:

B b = ... 
string json = new JavaScriptSerializer().Serialize(new 
{ 
    b.Prop1, b.Prop2 
}); 

,或者如果你想重命名生成的JSON這些屬性:

string json = new JavaScriptSerializer().Serialize(new 
{ 
    Foo = b.Prop1, 
    Bar = b.Prop2 
}); 
+0

+1匿名對象。看起來像最簡單的方法 – spender 2011-05-06 09:31:46

+0

哇,這是簡單和聰明的+1。 – David 2011-05-06 09:39:05

相關問題