Ошибка десериализации Json

328
09 декабря 2016, 08:53

Есть Json следующего вида

{"some_elements":[{"id":1, "name":"some_name"},{"id":2, "name":"some_name"}]}

короче массив некоторых элементов.

Мне нужно десериализовать это в такую модель

[DataContract(Name = "some_element")]
public class SomeElement: ModelBase
{
    [DataMember(Name = "id")]
    public int Id { get; set; }
    [DataMember(Name = "name")]
    public string Name { get; set; }
}
[DataContract(Name = "some_elements")]
public class SomeElementCollection: ModelBase, IEnumerable<IssueStatus>
{
    [DataMember]
    public IssueStatus[] Items;
    public IEnumerator<SomeElement> GetEnumerator()
    {
        return ((IEnumerable<SomeElement>)Items).GetEnumerator();
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return ((IEnumerable<SomeElement>)Items).GetEnumerator();
    }
}

На класс ModelBase пришлось повешать атрибут [DataContract] без Name (я не могу базовому классу задать имя контракта)

UPD:

Ошибка исправлена. Изначально был косяк в создании стрима. Теперь другая беда. Успешно создается SomeElementCollection, но он не содержит в себе элементов. Я подозреваю, что дело в том, что над SomeElement висит контракт с именем some_element, которого нет в разметке json. Но убрать его я не могу, потому что тип данных может использоваться и xml опционально, а в нем уже это выглядит так

<some_elements>
  <some_element>
    ***
  </some_element>
  <some_element>
    ***
  </some_element>
</some_elements>
READ ALSO
ObservableCollection в Backgroundworker

ObservableCollection в Backgroundworker

Есть метод поиска файлов:

273
Замена по регулярке

Замена по регулярке

Допустим, имеется текст text1(text2)text2 нужно получить text1 (text2) text2

298
Как определить текущий DispatcherPriority из метода который выполняет Dispatcher?

Как определить текущий DispatcherPriority из метода который выполняет Dispatcher?

Как определить текущий DispatcherPriority из метода который выполняет Dispatcher? Если я запускаю какой–то метод через Dispatcher с приоритетом (для примера)...

322