我试图用nba api给我一个json对象。
{
"resource": "commonteamyears",
"parameters": {
"LeagueID": "00"
},
"resultSets": [
{
"name": "TeamYears",
"headers": [
"LEAGUE_ID",
"TEAM_ID",
"MIN_YEAR",
"MAX_YEAR",
"ABBREVIATION"
],
"rowSet": [
[
"00",
1610612737,
"1949",
"2017",
"ATL"
],
[
"00",
1610612738,
"1946",
"2017",
"BOS"
],
[
"00",
1610612739,
"1970",
"2017",
"CLE"
],
[
"00",
1610612740,
"2002",
"2017",
"NOP"
],
[
"00",
1610612741,
"1966",
"2017",
"CHI"
],
[
"00",
1610612742,
"1980",
"2017",
"DAL"
],
[
"00",
1610612743,
"1976",
"2017",
"DEN"
],
[
"00",
1610612744,
"1946",
"2017",
"GSW"
],
[
"00",
1610612745,
"1967",
"2017",
"HOU"
],
[
"00",
1610612746,
"1970",
"2017",
"LAC"
],
[
"00",
1610612747,
"1948",
"2017",
"LAL"
],
[
"00",
1610612748,
"1988",
"2017",
"MIA"
],
[
"00",
1610612749,
"1968",
"2017",
"MIL"
],
[
"00",
1610612750,
"1989",
"2017",
"MIN"
],
[
"00",
1610612751,
"1976",
"2017",
"BKN"
],
[
"00",
1610612752,
"1946",
"2017",
"NYK"
],
[
"00",
1610612753,
"1989",
"2017",
"ORL"
],
[
"00",
1610612754,
"1976",
"2017",
"IND"
],
[
"00",
1610612755,
"1949",
"2017",
"PHI"
],
[
"00",
1610612756,
"1968",
"2017",
"PHX"
],
[
"00",
1610612757,
"1970",
"2017",
"POR"
],
[
"00",
1610612758,
"1948",
"2017",
"SAC"
],
[
"00",
1610612759,
"1976",
"2017",
"SAS"
],
[
"00",
1610612760,
"1967",
"2017",
"OKC"
],
[
"00",
1610612761,
"1995",
"2017",
"TOR"
],
[
"00",
1610612762,
"1974",
"2017",
"UTA"
],
[
"00",
1610612763,
"1995",
"2017",
"MEM"
],
[
"00",
1610612764,
"1961",
"2017",
"WAS"
],
[
"00",
1610612765,
"1948",
"2017",
"DET"
],
[
"00",
1610612766,
"1988",
"2017",
"CHA"
],
[
"00",
1610610031,
"1946",
"1946",
null
],
[
"00",
1610610029,
"1948",
"1948",
null
],
[
"00",
1610610025,
"1946",
"1949",
null
],
[
"00",
1610610034,
"1946",
"1949",
null
],
[
"00",
1610610036,
"1946",
"1950",
null
],
[
"00",
1610610024,
"1947",
"1954",
null
],
[
"00",
1610610027,
"1949",
"1949",
null
],
[
"00",
1610610030,
"1949",
"1952",
null
],
[
"00",
1610610033,
"1949",
"1949",
null
],
[
"00",
1610610037,
"1949",
"1949",
null
],
[
"00",
1610610023,
"1949",
"1949",
null
],
[
"00",
1610610026,
"1946",
"1946",
null
],
[
"00",
1610610028,
"1946",
"1946",
null
],
[
"00",
1610610032,
"1946",
"1948",
null
],
[
"00",
1610610035,
"1946",
"1946",
null
]
]
}
]
}
它让我回来的json让我头疼使用内置vs粘贴到类我得到这个作为我的类
public class Parameters
{
public string LeagueID { get; set; }
}
public class ResultSet
{
public string name { get; set; }
public List<string> headers { get; set; }
public List<List<object>> rowSet { get; set; }
}
public class RootObject
{
public string resource { get; set; }
public Parameters parameters { get; set; }
public List<ResultSet> resultSets { get; set; }
}
现在我唯一要回的是具有teamID和abbreviaton的rowset。不幸的是,我不知道如何继续进行给定的课程。
答案 0 :(得分:0)
类似的东西:
$PATH
示例输出:
var json = File.ReadAllText("my.txt"); // I'm too lazy to escape
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);
var data = obj.resultSets.Single(x => x.name == "TeamYears");
var teamIdIndex = data.headers.IndexOf("TEAM_ID");
var abbrIndex = data.headers.IndexOf("ABBREVIATION");
foreach(var row in data.rowSet)
{
var id = row[teamIdIndex];
var abbr = row[abbrIndex];
Console.WriteLine($"{id}: {abbr}");
}
答案 1 :(得分:0)
您可以访问rowSet,
RootObject obj = new RootObject();
var something = obj.resultSets[0].rowSet;
答案 2 :(得分:0)
嗯,你必须使用的JSON格式是,有点不正统。所以你必须做一些手动摇晃。
假设您使用的是JSON.Net,并且加载了所有类,我们只需要再添加一个:
public class NbaRow
{
public string LeagueId {get;set;}
public long TeamId {get;set;}
public string MinYear {get;set;}
public string MaxYear {get;set;}
public string Abbreviation {get;set;}
}
现在代码看起来像:
var json = "... json here ...";
var root = JsonConvert.DeserializeObject<RootObject>();
var results = new List<NbaRow>();
foreach(var item in root.resultSets.rowSet)
{
results.Add(new NbaRow{
LeagueId = Convert.ChangeType(item[0], typeof(string)),
TeamId = Convert.ChangeType(item[1], typeof(long)),
MinYear = Convert.ChangeType(item[2], typeof(string)),
MaxYear = Convert.ChangeType(item[3], typeof(string)),
Abbreviation = Convert.ChangeType(item[4], typeof(string))
});
}
注意:这假设标题的顺序没有变化。如果标题可以更改,请使用@ MarcGravell的答案。