新手。
我有一个c# Windows演示表单程序,我试图添加一个方法,下载JSON网页的字符串,然后创建事件列表(每个都有一个团队参加的列表)从页面中的数据。唯一的问题是JSON。. NET文档让我感到困惑,我似乎无法掌握JSON格式。
作为参考,该方法有两个部分:1)获取"官方"事件列表(如果你看,你会注意到每个事件项中都有一个"官方"布尔值),并创建一个包含每个事件"键"的字符串列表(每个事件项中的第一个值)2)对于每个事件"key",制作参加每个事件的团队列表,并根据他们的"team_number"对每个团队进行排序
这是一个事件列表的测试页面。下面是来自一个事件的团队列表的测试页面。
我对JSON最大的问题。. NET库/文档是,我似乎无法弄清楚如何采取每个项目,并从它隔离一个特定的值。例如,每个事件项中都有一大堆值,但我只需要"official"值和"key"值。与团队相同,我只需要每个项目的"team_number"值。
你们能帮我多理解一点这个库吗,或者如果这个库不适合这份工作,你们甚至可以给我指出正确的库吗?
首先要做的是使用json2sharp生成代表JSON的类。
public class Event
{
public string key { get; set; }
public string website { get; set; }
public bool official { get; set; }
public string end_date { get; set; }
public string name { get; set; }
public string short_name { get; set; }
public string facebook_eid { get; set; }
public string event_district_string { get; set; }
public string venue_address { get; set; }
public int? event_district { get; set; }
public string location { get; set; }
public string event_code { get; set; }
public int year { get; set; }
public List<object> webcast { get; set; }
public List<object> alliances { get; set; }
public string event_type_string { get; set; }
public string start_date { get; set; }
public int event_type { get; set; }
}
public class Team
{
public string website { get; set; }
public string name { get; set; }
public string locality { get; set; }
public int rookie_year { get; set; }
public string region { get; set; }
public int team_number { get; set; }
public string location { get; set; }
public string key { get; set; }
public string country_name { get; set; }
public string nickname { get; set; }
}
现在您可以将JSON反序列化为这些对象的列表,并使用LINQ查询列表中需要的内容。我从记忆中做这个,所以它可能需要一些调整工作。
var events = JsonConvert.Deserialize<IEnumerable<Event>>( eventJson );
var officialEvents = events.Where( e => e.official )
.Select( e => new { e.key, e.official } );