【问题标题】:RestSharp Deserialize a List in a ListRestSharp反序列化列表中的列表
【发布时间】:2011-08-12 12:18:29
【问题描述】:

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

我的 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>

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

这是我的执行语句:

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

8 月 19 日编辑:

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

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

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

知道我该如何解决这个问题:需要将下的项目解析为objectA,将根下的item的子项解析为objectB?

【问题讨论】:

    标签: c# xml-deserialization restsharp


    【解决方案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&lt;Item&gt;) 并将其转换为 List&lt;Item&gt;

    【讨论】:

    • 有效,但不能解决我的问题。 itemList[0].CollectionProperty 也应该是对象列表,但始终为空,因此子列表不会反序列化
    • 嗯,我猜你用另一种方法序列化了它。您可以使用与示例中相同的序列化程序对象,然后使用FileMode.OpenOrCreate 并以这种方式(反)序列化它。您确定 List 在序列化之前不为空吗?我还做了一个小库让它更容易一些,可以在这里找到xtudiocreatives.nl/xxmlserializer
    • 我正在从 restsharp 响应对象中获取我的数据。此对象的数据属性具有字符串中的 xml。使用 client.Execute>(response) 我收到一个“item”对象列表,其属性为 List 类型的属性“CollectionProps”,它不为空,但仅反序列化第一个条目,即使有更多
    • 我目前只能推荐一件事:下载 RestSharp v 101.3。来自网站:FIXED:使用派生自 List restsharp.org 的类时,某些 XML 属性未正确反序列化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多