Я создаю небольшое приложение, которое извлекает статистику из 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+, но я думал о том, чтобы сделать string.Replace ("[weaponName]", "weapon") в данных JSON перед их десериализацией, но я тоже не могу заставить его работать.
Буду признателен за любые советы.