
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.192.176] |
![]() |
|
Сообщ.
#1
,
|
|
|
Помогите разобраться с правильной десериализацией JSON ответа. К примеру имеем JSON ответ следующего вида:
![]() ![]() {"variant":"otvet1", "source":"otvet2", "items":[ {"list":"512"}, {"vist":"315"}, {"zist":"561"}]} Для его десериализации код: ![]() ![]() [DataContract] public partial class ItemsList { [DataMember(Name = "list")] public string lisType { get; set; } [DataMember(Name = "vist")] public string vistType { get; set; } [DataMember(Name = "zist")] public string zistType { get; set; } } [DataContract] public partial class SourceList { [DataMember(Name = "variant")] public string variantType { get; set; } [DataMember(Name = "source")] public string vistType { get; set; } [DataMember(Name = "items")] public List <ItemsList> TestItemsList { get; set; } } public class JsonStringSerializer { public static T Deserialize<T>(string strData) where T : class { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strData)); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); T tRet = (T)ser.ReadObject(ms); ms.Close(); return (tRet); } } private static SourceList SourceTempList; SourceTempList = JsonStringSerializer.Deserialize<SourceList>(e.Result); //в e.Result находится JSON ответ И все работает как нужно, а вот если JSON ответ будет следующего вида: ![]() ![]() {"variant":"otvet1", "source":"otvet2", "items":[3, {"list":"512"}, {"vist":"315"}, {"zist":"561"}]} т.е. после появления 3 в items, возникает проблема...и выше описанный код для десериализации не работает... был бы рад, если бы кто-нибудь смог мне объяснить... |
Сообщ.
#2
,
|
|
|
Объяснить что, почему код не работает? Так в items коллекция разнополых объектов получается, не укладывающаяся в List <ItemsList>
|
Сообщ.
#3
,
|
|
|
хм, а можно ли обойти 3 во время десериализации? или нужно для нее новый класс описать?
|
Сообщ.
#4
,
|
|
|
[DataMember(Name = "items")]
public List <object> TestItemsList { get; set; } вот так по идее сработает, а как типизировать такую коллекцию по-другому я хз |
Сообщ.
#5
,
|
|
|
хм, да так работает, но тогда они получаются типа object...из него потом можно будет вытащить?
|