我正在尝试从以下格式返回数据的API中获取数据:
[{
"song": {
"id": 12345,
"track": "TRACK A",
"artist": "ARTIST A"
},
"playedtime": "2018-02-14T09:07:15.976"
}, {
"song": {
"id": 54321,
"track": "TRACK B",
"artist": "ARTIST B"
},
"playedtime": "2018-02-14T09:03:29.355"
}]
我只需要获取第一个track
和artist
条目,在上面的例子中是“TRACK A”和“ARTIST A”。
到目前为止,我所做的可能是错误的是:
string response = await client.GetStringAsync(uri);
JArray parser = JArray.Parse(response);
rootTrack = JObject.Parse(parser.First.ToString())["track"].ToString();
rootArtist = JObject.Parse(parser.First.ToString())["artist"].ToString();
答案 0 :(得分:2)
我建议您按如下方式创建数据的c#表示:
public class Song
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("track")]
public string Track { get; set; }
[JsonProperty("artist")]
public string Artist { get; set; }
}
public class PlayListItem
{
[JsonProperty("song")]
public Song Song { get; set; }
[JsonProperty("playedtime")]
public DateTime PlayedTime { get; set; }
}
然后,您可以使用JSON.net反序列化您的JSON数据并访问所需的属性,如下所示:
List<PlayListItem> playList = JsonConvert.DeserializeObject<List<PlayListItem>>(response);
PlayListItem firstItem = playList.First();
string track = firstItem.Song.Track;
string artist = firstItem.Song.Artist;