JsonCommaDelimitedArrayConverterFactory.cs 973 B

12345678910111213141516171819202122232425262728
  1. using System;
  2. using System.Text.Json;
  3. using System.Text.Json.Serialization;
  4. namespace Jellyfin.Extensions.Json.Converters
  5. {
  6. /// <summary>
  7. /// Json comma delimited array converter factory.
  8. /// </summary>
  9. /// <remarks>
  10. /// This must be applied as an attribute, adding to the JsonConverter list causes stack overflow.
  11. /// </remarks>
  12. public class JsonCommaDelimitedArrayConverterFactory : JsonConverterFactory
  13. {
  14. /// <inheritdoc />
  15. public override bool CanConvert(Type typeToConvert)
  16. {
  17. return true;
  18. }
  19. /// <inheritdoc />
  20. public override JsonConverter? CreateConverter(Type typeToConvert, JsonSerializerOptions options)
  21. {
  22. var structType = typeToConvert.GetElementType() ?? typeToConvert.GenericTypeArguments[0];
  23. return (JsonConverter?)Activator.CreateInstance(typeof(JsonCommaDelimitedArrayConverter<>).MakeGenericType(structType));
  24. }
  25. }
  26. }