Сериализация строки в строку. JsonSerializer

Есть generic методе Foo<T>, в котором есть такая строка:

var responseObject = JsonSerializer.Deserialize<T>(stringData);

в некоторых случаях необходимо сделать вызов: Foo<string>(). В этом случае я получаю ошибку:

The JSON value could not be converted to System.String. Path: $ | LineNumber: 0 | BytePositionInLine: 1.

Подскажите, есть ли вариант заставить сериализатор понять, что от него требуется?


Ответы (1 шт):

Автор решения: aepot

JsonSerializer.Deserialize<T> не умеет возвращать строку, которую в него передали без изменений

Вместо этого можете попробовать вот такое заклинание

T responseObject = typeof(T) == typeof(string) ? (T)(object)stringData : JsonSerializer.Deserialize<T>(stringData);
→ Ссылка