using System; using System.Buffers; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; namespace Jellyfin.Extensions.Json.Converters { /// /// Converter to allow the serializer to read strings. /// public class JsonStringConverter : JsonConverter { /// public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.TokenType == JsonTokenType.String ? reader.GetString() : GetRawValue(reader); /// public override void Write(Utf8JsonWriter writer, string? value, JsonSerializerOptions options) => writer.WriteStringValue(value); private static string GetRawValue(Utf8JsonReader reader) { var utf8Bytes = reader.HasValueSequence ? reader.ValueSequence.ToArray() : reader.ValueSpan; return Encoding.UTF8.GetString(utf8Bytes); } } }