1

我有一个使用标准 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 自定义转换器,但我想知道在哪里插入它。

4

1 回答 1

1

好的,我想通了。我正在为那些通过谷歌登陆这个页面的人添加这个答案。真的超级简单:

在调用代码中,您像这样注册嵌套对象的转换器:

JavaScriptSerializer TheSerializer = new JavaScriptSerializer();

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

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

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

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

希望这会有所帮助。

于 2012-04-18T09:43:00.337 回答