2012-04-17 56 views
1

我有一個json自定義轉換器使用標準的asp.net庫。 我的轉換器看起來是這樣的:嵌套json自定義轉換器在C#與JavascriptConverter

public class MyObjectToJson : JavaScriptConverter 

    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer) 
    { 
    MyObject TheObject = obj as MyObject; 
    Dictionary<string, object> OutputJson = new Dictionary<string, object>(); 

    OutputJson.Add("SomeProperty", TheObject.Property1); 

    //line that I'm not figuring out 
    //I have a type MyNestedObject nested in the object model of MyObject 
    //I added that nested converter in the SupportedTypes method  

    OutputJson.Add("TheNestedObject",....?); 

    return OutputJson; 
    } 

    public override IEnumerable<Type> SupportedTypes 
    { 
     get { return new Type[] { typeof(MyObject), typeof(MyNestedObject) }; } 
    } 

基本上,我有這就是所謂的MyNestedObjectJson另一個JSON自定義轉換器,但是我不知道在哪裏插上

回答

1

好吧,我想通了。我爲那些通過谷歌登陸這個頁面的人添加了這個答案。這是真的那麼超級簡單:

調用代碼,您註冊嵌套對象的轉換器是這樣的:

JavaScriptSerializer TheSerializer = new JavaScriptSerializer(); 

TheSerializer.RegisterConverters(new JavaScriptConverter[] { 
    new MyObjectToJson(), new MyNestedObjectToJson() 
}); 

,然後在父對象的JSON轉換器,你只要寫行我有這樣的煩惱:

OutputJson.Add("TheNestedObject", TheObject.TheNestedObject); 

由於串行已經註冊兩個轉換器,嵌套對象的轉換器將在踢

希望這有助於一些。

+0

小增加:每個轉換都會在'SupportedTypes'中返回它自己的類型。並非如初始文章所示 – Harry13 2016-09-05 13:20:34