using System; using System.Buffers; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; namespace MediaBrowser.Common.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) { return reader.TokenType switch { JsonTokenType.Null => null, 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); } } }