aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrobibero <cody@robibe.ro>2020-09-01 08:52:50 -0600
committercrobibero <cody@robibe.ro>2020-09-01 08:52:50 -0600
commit1f2d73af8e986b945c53a4a8bc1be1124216589e (patch)
treed0192e51eed2da949100e24e1d3b0ef84cfd5db7
parent9b2359a4534df1b9700bdac8888e720bb0acda1d (diff)
Only handle empty string or null case
-rw-r--r--MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs28
-rw-r--r--MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs31
2 files changed, 12 insertions, 47 deletions
diff --git a/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs b/MediaBrowser.Common/Json/Converters/JsonNullableInt32Converter.cs
index 6c93cd13e..cd0017c78 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
/// <inheritdoc />
public override int? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
- if (reader.TokenType == JsonTokenType.String)
+ switch (reader.TokenType)
{
- ReadOnlySpan<byte> 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();
}
/// <inheritdoc />
diff --git a/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs b/MediaBrowser.Common/Json/Converters/JsonNullableInt64Converter.cs
index 369ea610a..8c6879ac7 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
/// <returns>Parsed value.</returns>
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();
}
/// <summary>