From 1f2d73af8e986b945c53a4a8bc1be1124216589e Mon Sep 17 00:00:00 2001 From: crobibero Date: Tue, 1 Sep 2020 08:52:50 -0600 Subject: [PATCH] Only handle empty string or null case --- .../Converters/JsonNullableInt32Converter.cs | 28 ++++------------- .../Converters/JsonNullableInt64Converter.cs | 31 ++++--------------- 2 files changed, 12 insertions(+), 47 deletions(-) diff --git a/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs b/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs index 6c93cd13e7..cd0017c780 100644 --- a/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs +++ b/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs @@ -1,6 +1,4 @@ using System; -using System.Buffers; -using System.Buffers.Text; using System.Text.Json; using System.Text.Json.Serialization; @@ -15,29 +13,15 @@ namespace MediaBrowser.Common.Json.Converters /// public override int? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - if (reader.TokenType == JsonTokenType.String) + switch (reader.TokenType) { - ReadOnlySpan span = reader.HasValueSequence ? reader.ValueSequence.ToArray() : reader.ValueSpan; - if (Utf8Parser.TryParse(span, out int number, out int bytesConsumed) && span.Length == bytesConsumed) - { - return number; - } - - var stringValue = reader.GetString().AsSpan(); - - // value is null or empty, just return null. - if (stringValue.IsEmpty) - { + case JsonTokenType.String when (reader.HasValueSequence && reader.ValueSequence.IsEmpty) || reader.ValueSpan.IsEmpty: + case JsonTokenType.Null: return null; - } - - if (int.TryParse(stringValue, out number)) - { - return number; - } + default: + // fallback to default handling + return reader.GetInt32(); } - - return reader.GetInt32(); } /// diff --git a/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs b/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs index 369ea610a4..8c6879ac7a 100644 --- a/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs +++ b/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs @@ -1,6 +1,4 @@ using System; -using System.Buffers; -using System.Buffers.Text; using System.Text.Json; using System.Text.Json.Serialization; @@ -22,32 +20,15 @@ namespace MediaBrowser.Common.Json.Converters /// Parsed value. public override long? Read(ref Utf8JsonReader reader, Type type, JsonSerializerOptions options) { - if (reader.TokenType == JsonTokenType.String) + switch (reader.TokenType) { - // try to parse number directly from bytes - var span = reader.HasValueSequence ? reader.ValueSequence.ToArray() : reader.ValueSpan; - if (Utf8Parser.TryParse(span, out long number, out var bytesConsumed) && span.Length == bytesConsumed) - { - return number; - } - - var stringValue = reader.GetString().AsSpan(); - - // value is null or empty, just return null. - if (stringValue.IsEmpty) - { + case JsonTokenType.String when (reader.HasValueSequence && reader.ValueSequence.IsEmpty) || reader.ValueSpan.IsEmpty: + case JsonTokenType.Null: return null; - } - - // try to parse from a string if the above failed, this covers cases with other escaped/UTF characters - if (long.TryParse(stringValue, out number)) - { - return number; - } + default: + // fallback to default handling + return reader.GetInt64(); } - - // fallback to default handling - return reader.GetInt64(); } ///