如何处理发生变化的 JSON?

由于我是新手,我很抱歉我的无知。我需要检查抽搐流是否直播。我通过使用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。


largeQ
浏览 152回答 1
1回答

交互式爱情

我找到了解决我的问题的方法。我正在创建的对象有 2 个变量,Datum[] data并且Pagination Pagination. 坦率地说,如果流离线,只有 JSON 字符串的变化(可以在问题中看到)是数据数组和分页块都是空的。通过检查这些变量的长度条件(检查其中一个就足够了),我可以确定流是实时的还是离线的。比如getStreams上课,if (getStreams.Datum.Length != 0) {return true;}else {return false;}
打开App,查看更多内容
随时随地看视频慕课网APP