public override DateTime? Read()

in src/JetBrains.Space.Common/Json.Serialization/Internal/NullableDateTimeConverter.cs [16:55]


    public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if (reader.TokenType == JsonTokenType.Null)
        {
            return null;
        }
            
        if (reader.TokenType != JsonTokenType.StartObject)
        {
            throw new JsonException();
        }

        DateTime returnValue = default;
        while (reader.Read())
        {
            if (reader.TokenType == JsonTokenType.PropertyName)
            {
                var propertyName = reader.GetString();
                if (propertyName != null && propertyName.Equals("iso", StringComparison.OrdinalIgnoreCase))
                {
                    reader.Read();
                    var iso = reader.GetString();

                    if (!string.IsNullOrEmpty(iso) && DateTime.TryParseExact(
                        iso, _expectedDateTimeFormat, CultureInfo.InvariantCulture.DateTimeFormat,
                        DateTimeStyles.AdjustToUniversal, out var dateTime))
                    {
                        returnValue = dateTime;
                    }
                }
            }
            
            if (reader.TokenType == JsonTokenType.EndObject)
            {
                return returnValue;
            }
        }

        throw new JsonException();
    }