由于我是新手,我很抱歉我的无知。我需要检查抽搐流是否直播。我通过使用HttpClient和 GET 请求来做到这一点。将TwitchDataJSON 反序列化为对象的类如下。public partial class TwitchData{ [JsonProperty("data")] public Datum[] Data { get; set; } [JsonProperty("pagination")] public Pagination Pagination { get; set; }}public partial class Datum{ [JsonProperty("id")] public string Id { get; set; } [JsonProperty("user_id")] [JsonConverter(typeof(ParseStringConverter))] public long UserId { get; set; } [JsonProperty("game_id")] [JsonConverter(typeof(ParseStringConverter))] public long GameId { get; set; } [JsonProperty("community_ids")] public object[] CommunityIds { get; set; } [JsonProperty("type")] public string Type { get; set; } [JsonProperty("title")] public string Title { get; set; } [JsonProperty("viewer_count")] public long ViewerCount { get; set; } [JsonProperty("started_at")] public DateTimeOffset StartedAt { get; set; } [JsonProperty("language")] public string Language { get; set; } [JsonProperty("thumbnail_url")] public string ThumbnailUrl { get; set; }}public partial class Pagination{ [JsonProperty("cursor")] public string Cursor { get; set; }}public partial class TwitchData{ public static TwitchData FromJson(string json) => JsonConvert.DeserializeObject<TwitchData>(json, QuickType.Converter.Settings);}public static class Serialize{ public static string ToJson(this TwitchData self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);}我用这个做请求HttpClient client = new HttpClient();string uri = "https://api.twitch.tv/helix/streams?user_id=59980349";client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Client-ID", token);var result = client.GetStringAsync(uri);jsonString = result.ToString();twitchData = PwdResetRequest.FromJson(jsonString);这样做的问题是,如果流离线,JSON 会发生变化,从而使编写的类TwitchData无法用于 JsonConvert.DeserializeObject。以下是流在线和离线时的 JSON。
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
我找到了解决我的问题的方法。我正在创建的对象有 2 个变量,Datum[] data并且Pagination Pagination. 坦率地说,如果流离线,只有 JSON 字符串的变化(可以在问题中看到)是数据数组和分页块都是空的。通过检查这些变量的长度条件(检查其中一个就足够了),我可以确定流是实时的还是离线的。比如getStreams上课,
if (getStreams.Datum.Length != 0) {
return true;
}
else {
return false;
}
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消