繁体   English   中英

RestSharp反序列化列表中的列表

[英]RestSharp Deserialize a List in a List

我在让它工作时遇到了一些麻烦:

我的 xml 看起来像:

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

我的 class 看起来像:

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 周围包裹另一个 class

CollectionPropCollection : List<CollectionProp>

还尝试过:CollectionPropCollection class 带有/或带有 CollectionProp 类型的属性“项目”。

这是我的执行语句:

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

编辑 8 月 19 日:

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

XmlDeserializer 有问题区分下的项目和下的项目

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

任何想法我可以如何解决这个问题:需要将下的项目解析为objectA,下的项目,它是根下的项目的子项,需要解析为objectB?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM