Json.Net中仅针对一种类型的自定义序列化器

时间:2018-12-19 12:10:44

标签: c# json serialization json.net

Json.Net中是否有任何方法可以告诉它像正常情况那样序列化大多数类型,但是要使用自定义序列化程序,只要它发现x类型的对象,我都会提供它。

从本质上讲,这里的想法是AFAIK,如果要对Json.Net中的类型使用自定义序列化,则必须指定如何在类型内完成操作。通过实现ISerializable或使用属性。但是,如果我无权访问该类型,则无法修改该类型的序列化。

相反,我想知道是否可以将该信息注入jsonConverter中,以便它知道对类型使用自定义序列化。

假设地,我想做这样的事情:

class A 
{
    B B {get; set;}
}

class B
{
}

BSerializer : ISerilalizer<B>
{
     public string Serialize(B obj) => "This is a B"
}

...

JsonConverter.SerializeObject(new A{B = new B()}, new BSerializer()) 

此序列化的结果将是

{
    "B" : "This is a B"
}

现在显然该接口不存在,但是我可以使用Json.Net提供的现有API做类似的事情吗?

0 个答案:

没有答案