我正在开发一个小应用程序,从一个我无法控制的API中获取统计数据。
JSON字符串如下:
{
"weapons":
[
{
"aek":
{
"name":"AEK-971 Vintovka",
"kills":47,
"shots_fired":5406,
"shots_hit":858
},
"xm8":
{
"name":"XM8 Prototype",
"kills":133,
"shots_fired":10170,
"shots_hit":1790
},
}
]
}
我的对象设置如下:
class WeapsCollection
{
public WeaponList[] Weapons { get; set; }
}
class WeaponList
{
public WeaponDetails AEK { get; set; }
public WeaponDetails XM8 { get; set; }
}
class WeaponDetails
{
public string Name { get; set; }
public int Kills { get; set; }
public int Shots_Fired { get; set; }
public int Shots_Hit { get; set; }
}
我现在没有任何反序列化字符串的问题,也就是说,我可以这样做:
WeapsCollection weps = JsonConvert.DeserializeObject<WeapsCollection>(json);
Console.WriteLine(weps.Weapons.First().AEK.Name.ToString());
Console.ReadLine();
这将输出AEK-971 Vintovka
好的...但我不希望不同的武器作为单独的属性。我希望能够枚举每个武器并对每个武器进行foreach或类似操作:
Console.WriteLine(weapons.Where(w => w.Kills > 30).Name.ToString());
有什么提示可以实现这个目标吗?
实际武器列表超过 60 种,但在反序列化 JSON 数据之前,我考虑在数据中执行 string.Replace("[weaponName]", "weapon"),但无法使其起作用。
我会感激任何提示。