使用列表中的Newtonsoft列表反序列化Object

时间:2013-06-20 08:14:18

标签: c# .net json winforms

首先,抱歉我的英语不好。您好,我正在尝试将json(使用newtonsoft)反序列化为列表,这非常有用。但我唯一的问题是我需要在列表中放一个列表,如果这是可能的话。为什么我要这样做是因为我有一组子项目。如何将所有这些放在一个很好的排序列表中?以下是我制作的一些示例代码:

C#代码

var items = JsonConvert.DeserializeObject<List<Items>>(wc.DownloadString("http://localhost/index.php"));
foreach (var item in items)
{
    Console.WriteLine(item);
}

listItems.AddRange(items);

public class Items
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Genre { get; set; }
    public string Size { get; set; }
    public string Version { get; set; }
    public string Download_Link { get; set; }
    public string Description { get; set; }
}

JSON

[
    {
        "id": "1",
        "name": "Application 1",
        "genre": "Something",
        "description": "The description",
        "versions": [
            {
                "appid": "1",
                "version": "1",
                "patch_notes": "Release version.",
                "download_link": "http://localhost/downloads/application_1.zip",
                "size": 5120
            }
        ]
    }
]

我的问题是我似乎无法将第二个数组放在列表中。我知道我做错了什么,但我似乎无法弄清楚是什么,有人可以帮我解决这个问题吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

在json中,Versions是一个数组。您还必须为该对象建模。

你的模型看起来应该是这样的

public class Items
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Genre { get; set; }
    public string Description { get; set; }
    public List<Version> Versions { get; set; }
}

public class Version
{
    public string Appid { get; set; }
    public string Version { get; set; }
    public string Patch_Notes { get; set; }
    public string Download_Link { get; set; }
    public int Size { get; set; }
}