[英]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.