我有一个使用标准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自定义转换器,但我想知道在哪里插入它。
答案 0 :(得分:1)
在调用代码中,您可以注册嵌套对象的转换器:
JavaScriptSerializer TheSerializer = new JavaScriptSerializer();
TheSerializer.RegisterConverters(new JavaScriptConverter[] {
new MyObjectToJson(), new MyNestedObjectToJson()
});
然后,在父对象的json转换器中,您只需编写我遇到问题的行:
OutputJson.Add("TheNestedObject", TheObject.TheNestedObject);
由于序列化程序已注册两个转换器,嵌套对象的转换器将启动。
希望这会有所帮助。