繁体   English   中英

C#反序列化嵌套列表并进行嵌套

[英]C# deserialize nested lists and foreach them

我想通过此JSON中的嵌套List运行foreach循环。

我收到一些看起来像的JSON:

{
    "name":"Placeholder",
    "entries":
        [
            {
                "playerId": "27271906",
                "playerName": "Billy"
            },
            {
                "playerId": "35568613",
                "playerName": "Jeeves"
            }
        ]
}

类别:

public class IDs
{
    public string playerId { get; set; }
}

public class Top
{
    public List<IDs> entries { get; set; }
}

当我去运行该程序时,它似乎无法正常工作:

List<string> pros = new List<string>();
using (var web = new WebClient())
{
    web.Encoding = System.Text.Encoding.UTF8;
    var jsonString = responseFromServer;
    var jss = new JavaScriptSerializer();
    var ProsList = jss.Deserialize<List<IDs>>(jsonString);
    int i = 1;

    foreach (IDs x in ProsList)
    {                        
        pros.Add(x.playerId);
        i++;
        if (i == 3)
        {
            break;
        }
    }
}

当我这样设置它时,它会说由于没有枚举器,所以我不能使用foreach 任何想法? 我是C#和这种语法的新手,因此对于某些人来说可能真的很容易。 谢谢!

我要补充一点,我正在使用Visual Studio 2013。

您必须将json反序列化为Top而不是List<IDs> ,并枚举result.entries 将您的代码更改为以下

List<string> pros = new List<string>();
using (var web = new WebClient())
{
    web.Encoding = System.Text.Encoding.UTF8;
    var jsonString = responseFromServer;
    var jss = new JavaScriptSerializer();
    var result = jss.Deserialize<Top>(jsonString);
    int i = 1;

    foreach (IDs x in result.entries)
    {                        
        pros.Add(x.playerId);
        i++;
        if (i == 3)
        {
            break;
        }
    }
}

另外,您也可以使用JSON.NET,如下所示

List<string> pros = new List<string>();
using (var web = new WebClient())
{
    web.Encoding = System.Text.Encoding.UTF8;
    var jsonString = responseFromServer;

    var result = JsonConvert.DeserializeObject<Top>(jsonString);
    int i = 1;

    foreach (IDs x in result.entries)
    {                        
        pros.Add(x.playerId);
        i++;
        if (i == 3)
        {
            break;
        }
    }
}

工作演示: https : //dotnetfiddle.net/naqPx2

暂无
暂无

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

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