using System; using System.Text.Json; using System.Text.Json.Serialization; namespace Jellyfin.Extensions.Json.Converters; /// /// Enum flag to json array converter. /// /// The type of enum. public class JsonFlagEnumConverter : JsonConverter where T : struct, Enum { private static readonly T[] _enumValues = Enum.GetValues(); /// public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { throw new NotImplementedException(); } /// public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { writer.WriteStartArray(); foreach (var enumValue in _enumValues) { if (value.HasFlag(enumValue)) { writer.WriteStringValue(enumValue.ToString()); } } writer.WriteEndArray(); } }