-1

Я хотел бы использовать C# DataContractJsonSerializer для де-сериализации некоторого json в тип, которому не хватает атрибутов сериализации. Этот тип также наследуется от нескольких интерфейсов с каждым интерфейсом, имеющим много общедоступных свойств.DataContractJsonSerializer - десериализация для непривязанного/унаследованного класса

Я не могу изменить тип, который я пытаюсь де-сериализовать, или интерфейсы, из которых он наследует, - это то, что я пытаюсь сделать возможным в C#?

ответ

1

это то, что я пытаюсь сделать возможным в C#?

Все, что вам нужно сделать, это написать небольшой фрагмент кода для тестирования.

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CL1)); 
var m = new MemoryStream(Encoding.UTF8.GetBytes(@"{""I1"":""test1"",""I2"":""test2""}")); 
var cl1 = ser.ReadObject(m) as CL1; 
Console.WriteLine(cl1.I1 + " " + cl1.I2); 

Так что ответ ДА ​​

public interface II1 
{ 
    string I1 { set; get; } 
} 
public interface II2 
{ 
    string I2 { set; get; } 
} 
public class CL1 : II1, II2 
{ 
    public string I1 { set; get; } 
    public string I2 { set; get; } 
} 
+0

Спасибо, я написал аналогичные рабочий код. В настоящее время я предполагаю, что проблема в моем экземпляре (после дополнительной проверки) заключается в том, что у этого типа нет конструктора по умолчанию. – fusi

+0

@fusi Лучше, используйте Json.Net, если он не делает этого по умолчанию, есть много способов подключиться к процессу десериализации. – EZI

Смежные вопросы