将-only- root元素类型信息添加到Json.Net中的序列化对象

时间:2016-01-11 09:36:18

标签: c# json.net

我知道在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)。

0 个答案:

没有答案