Пользовательский сериализатор только для одного типа в Json.Net - PullRequest
0 голосов
/ 19 декабря 2018

Есть ли способ в 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"
}

Теперь, очевидно, этоинтерфейс не существует, но могу ли я сделать что-то похожее с использованием существующих API-интерфейсов, которые предоставляет Json.Net?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...