使用JavascriptConverter在c#中嵌套json自定义转换器

时间:2012-04-17 14:18:59

标签: c# json

我有一个使用标准asp.net库的json自定义转换器。 我的转换器看起来像这样:

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 个答案:

答案 0 :(得分:1)

好吧,我明白了。我正在为通过谷歌登陆此页面的人添加此答案。它真的非常简单:

在调用代码中,您可以注册嵌套对象的转换器:

JavaScriptSerializer TheSerializer = new JavaScriptSerializer();

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

然后,在父对象的json转换器中,您只需编写我遇到问题的行:

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

由于序列化程序已注册两个转换器,嵌套对象的转换器将启动。

希望这会有所帮助。