У меня похожий вопрос.
десериализация списка объектов с использованием json.net
Обычно мы делаем, как показано ниже, для десериализации списка объектов.Но в моем случае я не могу жестко кодировать List<Category>
, так как я не знаю, какой будет тип.
JsonConvert.DeserializeObject<List<Category>>(response.dtosString)
В json будет свойство, которое даст мне имя типа, с помощью которого я смогу создать тип, как показано ниже
string typename = string.Format("{0}, ABC.EDF", myresponse.dtoType);
Type resultType = Type.GetType(typename);
Теперь я хочу использовать что-то вроде ниже
JsonConvert.DeserializeObject<List<typename>>(myresponse.dtosString)
Я попробовал ниже, но не работает, так как он говорит, что динамическое не может быть преобразовано и нуждается в явной логике преобразования.
Десериализация неизвестного типа в JSON.NET
РЕШЕНИЕ: Спасибо Крису за то, что он указал мне правильное направление.
Это то, что я сделал
string typename = string.Format("{0}, ABC.EDF", myresponse.dtoType);
Type resultType = Type.GetType(typename);
var listType = typeof(List<>);
Type constructedListType = listType.MakeGenericType(resultType);
var myData = Newtonsoft.Json.JsonConvert.DeserializeObject(myresponse.dtosString, constructedListType);
После этого я просто предоставляю myData для функции чтения, котораянаходится в сторонней библиотеке, к которой у меня нет доступа, и которая обрабатывает данные.