为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理发生变化的 JSON?

如何处理发生变化的 JSON?

C#
largeQ 2022-01-09 10:55:16
由于我是新手,我很抱歉我的无知。我需要检查抽搐流是否直播。我通过使用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;

}


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信