Jsonconverter определяет, является ли значение свойства десятичным или числовым - PullRequest
0 голосов
/ 29 марта 2020

У меня есть этот 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;
        }
...