RestSharp десериализовать список в списке - PullRequest
1 голос
/ 12 августа 2011

У меня возникли проблемы с тем, чтобы заставить это работать:

мой xml выглядит так:

<root>
    <item>
        <id></id>
        <name></name>
        <CollectionProp>
            <item>
                <id></id>
                <name></name>
            </item>
        </CollectionProp>
    </item>
</root>

мой класс выглядит так:

public class Item
{
    public int id { get; set; }
    public string name { get; set; }
    public List<CollectionProp> CollectionProp { get; set; }
}

и еще один:

public class CollectionProp
{
    public int id { get; set; }
    public string name { get; set; }
}

я также пытался обернуть другой класс в CollectionProp

CollectionPropCollection : List<CollectionProp>

Также пробовал: класс CollectionPropCollection с / или со свойством "item" типа CollectionProp.

вот мое заявление на выполнение:

var result = client.Execute<List<Item>>(request);

РЕДАКТИРОВАТЬ 19 августа:

хорошо, мое сообщение неясно указывало на мою проблему.так что теперь я думаю, что разбил проблему следующим образом:

XmlDeserializer имеет проблему, чтобы различать элемент под и элемент под

, поэтому ответ имеет 2 элемента и каждый имеет3 пункта ниже, мой десериализованный результат содержит 8 объектов.первый со значениями, следующие 3 со свойствами, равными нулю, четвертый со значениями и т. д.

любая идея, как я могу решить эту проблему следующим образом: элемент under должен быть проанализирован вobjectA, элемент under, который является дочерним элементом для элемента root, необходимо проанализировать в objectB?

1 Ответ

1 голос
/ 12 августа 2011

Если XML-файл является сериализованным Item, вы можете сделать это:

XmlSerializer serializer = new XmlSerializer(typeof(Item)); //or if you have a item variable item.GetType()
FileStream stream = new FileStream(pathToFile, FileMode.Open, FileAccess.ReadWrite);
Item item = (Item) serializer.Deserialize(stream);
stream.Close();

ОБНОВЛЕНИЕ

Когда это список элементов, вы просто заменяете typeof(Item) на typeof(List<Item>)и вы приведете его к List<Item>

...