RestSharp反序列化列表中的列表

时间:2011-08-12 12:18:29

标签: c# xml-deserialization restsharp

我无法解决此问题:

我的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类,带有/或属性为CollectionProp的属性“item”。

这是我的执行声明:

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

编辑8月19日:

好吧,我的帖子可能没有明确指出我的问题。 所以现在我觉得我把问题分解为以下几点:

XmlDeserializer在区分

下的项目和项目时遇到问题

所以响应有2个项目,每个项目下面有3个项目,我的反序列化结果有8个对象。第一个是值,下一个是3,属性设置为null,第四个是值,等等......

任何想法如何以这样的方式解决这个问题:需要将项解析为objectA,item下的项,是root下项的子项,是否需要解析为objectB?

1 个答案:

答案 0 :(得分:1)

如果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>