首页 > 解决方案 > 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 做类似的事情吗?

标签: c#jsonserializationjson.net

解决方案


推荐阅读