Я пытаюсь десериализовать объект JSON в объект с некоторым атрибутом «объект», который может каждый раз отличаться.У меня есть функция сериализатора / десериализатора, которая отлично работает при использовании простых типов переменных или определенных.
Я пытался привести объект к нужному классу, пытался получить объект как динамический и т. Д. Однако я всегдаполучить исключение: «Ссылка на объект не установлена ...»
Функция десериализации:
public static T deserializeJSON<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType($
obj = (T)serializer.ReadObject(ms);
}
return obj;
}
Пример объекта:
[DataContract]
class Client
{
[DataMember] private string name;
[DataMember] private string address;
[DataMember] private string bio;
[DataMember] private object specific; //WHERE SPECIFIC MAY BE ANY OTHER OBJECT THAT I CAST AFTER DESERIALIZATION
}
Пример объекта2:
[DataContract]
class Server
{
[DataMember] private string name;
[DataMember] private int value;
}
Специфическим атрибутом может быть любой другой объект.Представьте, что «конкретный» атрибут является объектом типа «Сервер»;Функция десериализации хорошо загружает все атрибуты, а не специфические, которые загружаются как объект, но не могут преобразовать их в сервер.
PD: В момент десериализации я знаю, какой тип класса является «конкретным» атрибутом.
Спасибо!