【发布时间】:2015-06-22 11:49:02
【问题描述】:
我正在尝试反序列化 this json。 首先,我使用json2charp 创建类。 但是,我不确定在这种情况下生成的类是否正确。 但是我提出了一个 Http 请求:
public string Request(string requestUrl)
{
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/json";
string responseText;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
responseText = responseStream.ReadToEnd();
}
return responseText;
}
通过这个函数,我从 JSON 传递反序列化的链接,我将返回一个带有响应的字符串。 此时我将响应保存到变量中:
string responseText = parser.Request(requestUrl);
然后创建一个对象,其中包含先前使用工具 json2csharp 生成的 RootObject 中定义的参数列表。 问题是foreach不会接受item,说没有GetEnumerator的定义。
var obj = JsonConvert.DeserializeObject<Fixtures.RootObject>(responseText);
foreach (var element in obj) //this insert the value into a Datagrid.
{
MainWindow.AppWindow.Fixtures_Table.Items.Add(new Fixtures.Fixture
{
date = element.date;
etc...
});
}
json结构:
fixture:": {
"_links": {
"self": {
"href": "http://api.football-data.org/alpha/fixtures/133566"
},
"soccerseason": {
"href": "http://api.football-data.org/alpha/soccerseasons/347"
},
"homeTeam": {
"href": "http://api.football-data.org/alpha/teams/556"
},
"awayTeam": {
"href": "http://api.football-data.org/alpha/teams/514"
}
},
"date": "2013-10-04T22:00:00Z",
"matchday": 10,
"homeTeamName": "Nimes Olympique",
"awayTeamName": "SM Caen",
"result": {
"goalsHomeTeam": 2,
"goalsAwayTeam": 1
}
},
"head2head": {
"count": 10,
"timeFrameStart": "2014-05-12T22:00:00Z",
"timeFrameEnd": "2000-09-29T22:00:00Z",
"homeTeamWins": 1,
"awayTeamWins": 5,
"draws": 4,
"lastHomeWinHomeTeam": { },
"lastWinHomeTeam": { },
"lastAwayWinAwayTeam": { },
"lastWinAwayTeam": { },
"fixtures": [ ]
}
}
所以我想知道我是否做错了什么以及生成的类是否良好。 如果其他人可以更智能有效地反序列化 JSON,我很乐意阅读!
【问题讨论】: