У меня есть этот jsonconverter, который должен преобразовать заданное значение свойства в десятичное или длинное, в зависимости от значения, но я не могу определить, когда значение свойства является десятичным или длинным, поскольку токенпайп может только определять число. .. как мне решить эту проблему?
public override IDictionary<string, object> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
IDictionary<string, object> output = new Dictionary<string, object>();
while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
string propertyName = reader.GetString();
reader.Read();
object? propertyValue = null;
switch (reader.TokenType)
{
case JsonTokenType.Number:
propertyValue = reader.GetInt64(); // or could be a decimal for where I should reader.GetDecimal()
break;
case JsonTokenType.String:
if (reader.TryGetDateTime(out DateTime value))
{
propertyValue = value;
}
else
{
propertyValue = reader.GetString();
}
break;
case JsonTokenType.True:
case JsonTokenType.False:
propertyValue = reader.GetBoolean();
break;
}
output.Add(propertyName, propertyValue);
}
return output;
}