mirror of
https://github.com/unclshura/splitter.git
synced 2026-06-21 16:12:01 +00:00
31 lines
895 B
C#
31 lines
895 B
C#
using System.Globalization;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace splitter;
|
|
|
|
public sealed class FlexibleLongConverter : JsonConverter<long?>
|
|
{
|
|
public override long? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
{
|
|
if (reader.TokenType == JsonTokenType.Number)
|
|
return reader.GetInt64();
|
|
|
|
if (reader.TokenType == JsonTokenType.String)
|
|
{
|
|
var s = reader.GetString();
|
|
if (long.TryParse(s, NumberStyles.Integer, CultureInfo.InvariantCulture, out var v))
|
|
return v;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public override void Write(Utf8JsonWriter writer, long? value, JsonSerializerOptions options)
|
|
{
|
|
if (value.HasValue)
|
|
writer.WriteNumberValue(value.Value);
|
|
else
|
|
writer.WriteNullValue();
|
|
}
|
|
} |