public static string ToSpotifyString(this RecommendationSeedType recommendationSeedType) => recommendationSeedType switch {
public override RecommendationSeed Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType is not JsonTokenType.StartObject) { throw new JsonException(); } var uriConverter = options.GetConverter <Uri>(); string id = string.Empty; Uri? href = null; RecommendationSeedType type = default; int initialPoolSize = default; int afterFilteringSize = default; int afterRelinkingSize = default; while (reader.Read()) { if (reader.TokenType is JsonTokenType.EndObject) { break; } if (reader.TokenType is not JsonTokenType.PropertyName) { throw new JsonException(); } var propertyName = reader.GetString(); reader.Read(); // Read to next token. switch (propertyName) { case "id": id = reader.GetString() !; break; case "href": href = reader.TokenType is JsonTokenType.Null ? null : uriConverter.Read(ref reader, typeof(Uri), options) !; break; case "type": // For some reason, the Spotify Web API returns the type in uppercase. So much for consistency. type = RecommendationSeedTypeConverter.FromSpotifyString(reader.GetString() !.ToLower()); break; case "initialPoolSize": initialPoolSize = reader.GetInt32(); break; case "afterFilteringSize": afterFilteringSize = reader.GetInt32(); break; case "afterRelinkingSize": afterRelinkingSize = reader.GetInt32(); break; default: reader.Skip(); break; } } return(new(id, href, type, initialPoolSize, afterFilteringSize, afterRelinkingSize)); }