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