| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | using System;using System.Buffers;using System.Buffers.Text;using System.Text.Json;using System.Text.Json.Serialization;namespace MediaBrowser.Common.Json.Converters{    /// <summary>    /// Converts a GUID object or value to/from JSON.    /// </summary>    public class JsonInt32Converter : JsonConverter<int>    {        /// <inheritdoc />        public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)        {            static void ThrowFormatException() => throw new FormatException("Invalid format for an integer.");            ReadOnlySpan<byte> span = stackalloc byte[0];            if (reader.HasValueSequence)            {                long sequenceLength = reader.ValueSequence.Length;                Span<byte> stackSpan = stackalloc byte[(int)sequenceLength];                reader.ValueSequence.CopyTo(stackSpan);                span = stackSpan;            }            else            {                span = reader.ValueSpan;            }            if (!Utf8Parser.TryParse(span, out int number, out _))            {                ThrowFormatException();            }            return number;        }        /// <inheritdoc />        public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)        {            static void ThrowInvalidOperationException() => throw new InvalidOperationException();            Span<byte> span = stackalloc byte[16];            if (Utf8Formatter.TryFormat(value, span, out int bytesWritten))            {                writer.WriteStringValue(span.Slice(0, bytesWritten));            }            ThrowInvalidOperationException();        }    }}
 |