You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
The JsonSchemaType class is intended to represent a JSON Schema type, but its ToString() method currently produces a Pascal-cased string, e.g.:
JsonSchemaType.Object.ToString() == "Object"
but the actual JSON schema type is lowercase "object". So if a user wants to obtain the real JSON Schema type from a JsonSchemaType object, they currently must lowercase it themselves, and must use case-insensitive compares for type values in actual JSON schemas.
And there is the reverse problem, which is that EnumParse of a correctly-cased JSON Schema type currently throws an exception rather than returning the appropriate JsonSchemaType object.
Enum.Parse<JsonSchemaType>("object")
Unhandled exception. System.ArgumentException: Requested value 'object' was not found.
at System.Enum.TryParseByName[TStorage](RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TStorage& result)
at System.Enum.TryParseByValueOrName[TUnderlying,TStorage](RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TUnderlying& result)
at System.Enum.Parse[TEnum](String value, Boolean ignoreCase)
at System.Enum.Parse[TEnum](String value)
at Program.<Main>$(String[] args)
Command terminated by signal 6
Describe the solution you'd like
I think the JsonSchemaType class should provide a method that returns the correctly-cased JSON Schema type.
In addition, Enum.Parse of a correctly-cased JSON schema type should return the appropriate JsonSchemaType object.
Describe alternatives you've considered
One alternative is to change the ToString() method to return a correctly cased JSON Schema type value.
Another alternative is to provide a new method, such as ToIdentifier(), that returns the correctly cased value.
For EnumParse, it should accept either the Pascal-cased or correctly-cased JSON Schema type and return the appropriate JsonSchemaType object.
Is your feature request related to a problem? Please describe.
The
JsonSchemaType
class is intended to represent a JSON Schema type, but itsToString()
method currently produces a Pascal-cased string, e.g.:but the actual JSON schema type is lowercase "object". So if a user wants to obtain the real JSON Schema type from a
JsonSchemaType
object, they currently must lowercase it themselves, and must use case-insensitive compares for type values in actual JSON schemas.And there is the reverse problem, which is that
EnumParse
of a correctly-cased JSON Schema type currently throws an exception rather than returning the appropriateJsonSchemaType
object.Describe the solution you'd like
I think the JsonSchemaType class should provide a method that returns the correctly-cased JSON Schema type.
In addition,
Enum.Parse
of a correctly-cased JSON schema type should return the appropriateJsonSchemaType
object.Describe alternatives you've considered
One alternative is to change the
ToString()
method to return a correctly cased JSON Schema type value.Another alternative is to provide a new method, such as
ToIdentifier()
, that returns the correctly cased value.For
EnumParse
, it should accept either the Pascal-cased or correctly-cased JSON Schema type and return the appropriateJsonSchemaType
object.Additional context
Recreate on dotnetfiddle
Discussion on aspnetcore PR 59480 that motivated this issue.
The text was updated successfully, but these errors were encountered: