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