RestSharp反序列化列表中的列表

发布于 2024-11-29 09:41:49 字数 1351 浏览 0 评论 0原文

我在使其工作时遇到一些麻烦:

我的 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 类型的属性“item”的 CollectionPropCollection 类。

这是我的执行语句:

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

编辑 8 月 19 日:

好吧,我的帖子可能没有清楚地指出我的问题。 所以现在我想我将问题分解为以下内容:

XmlDeserializer 在区分下面的项目和下面的项目时存在问题,

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

知道我如何以如下方式解决这个问题: item under 需要解析为 objectA,item under ,其中是 root 下 item 的子项,需要解析为 objectB 吗?

i have some trouble getting this to work:

my xml looks like:

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

my class looks like:

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

and another one:

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

i also tried to wrap another class around CollectionProp

CollectionPropCollection : List<CollectionProp>

Also tried: CollectionPropCollection class with / or with a property "item" of type CollectionProp.

here's my execute statement:

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

EDIT Aug 19:

ok, my post may not clearly pointed out my problem.
so now i think i broke down the problem to the following:

the XmlDeserializer has a problem to distinguish between the item under and the item under

so the response has 2 items under and each has 3 items under , my deserialized result has 8 objects. the first with values, the next 3 with properties set to null, the 4th with values and so on....

any idea how i can solve this in a way like : item under needs to be parsed into objectA, item under , which is a child of item under root, needs to be parsed into objectB ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

向地狱狂奔 2024-12-06 09:41:50

如果 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();

UPDATE

当它是项目列表时,您只需将 typeof(Item) 替换为 typeof(List;) 然后将其转换为 List

If the xml file is a serialized Item you can do this:

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();

UPDATE

When it's a list of Items you just replace typeof(Item) with typeof(List<Item>) and you cast it to a List<Item>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文