我知道在Json.Net中有序列化类型信息的选项。
我们可以将类型信息作为$ type属性添加到json对象。
但TypeNameHandling.Objects和TypeNameHandling.Array选项都会显着增加邮件大小。
我需要序列化根元素类型信息。我有复杂的对象,我只需要主对象类型信息。
我怎样才能实现它?我可以写新的TypeNameHandling吗?
示例C#对象和所需的JSON结果
public class MainComplexObject
{
public int Id { get; set; }
public IEnumerable<B> BList { get; set; }
}
public class B
{
public int Id { get; set; }
public string Name { get; set; }
public C C { get; set; }
}
public class C
{
}
我们要序列化MainComplexObject,需要Json结果:
{“$ type”:“ns.MyComplexObject,...”,“Id”:3,BList:[{“Id”:85,“Name”:“... ”, “C”:{...}]}
只有MainComplexObject类型被写入Json。除了那之外没有类型信息。
编辑@dbc的评论:
所有分类(MyComplexObject,B,C,..)都有接口。
注意
我想将它反序列化为正确的类型(MyComplexObject)。