using System; using System.Collections.Generic; using Newtonsoft.Json; namespace TMDbLib.Utilities.Converters { /// /// In some cases, TMDb sends a list of integers as an object /// internal class TmdbIntArrayAsObjectConverter : JsonConverter { public override bool CanConvert(Type objectType) { throw new NotSupportedException(); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // Sometimes the genre_ids is an empty object, instead of an array // In these instances, convert it from: // "genre_ids": {} // "genre_ids": [ 1 ] // To: // "genre_ids": [] // "genre_ids": [ 1 ] if (reader.TokenType == JsonToken.StartArray) return serializer.Deserialize>(reader); if (reader.TokenType == JsonToken.StartObject) { reader.Skip(); return new List(); } if (reader.TokenType == JsonToken.Null) return null; throw new Exception("Unable to convert list of integers"); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // Pass-through serializer.Serialize(writer, value); } } }