【问题标题】:Get specific data from first JsonArray从第一个 JsonArray 获取特定数据
【发布时间】:2018-02-14 08:51:53
【问题描述】:

我正在尝试从以以下格式返回数据的 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"
}]

我只需要获取第一个 trackartist 条目,在上面的示例中是“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();

【问题讨论】:

  • json 无效。
  • @MichaelRandall 我的错,已编辑。

标签: c# json parsing json.net


【解决方案1】:

我建议创建数据的 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;

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多