I am using System.Text.Json.Serialization
I am trying to deserialize a member with a dash in the EnumMember
value CheckStatus
.
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))]
public enum CheckStatus
{
[System.Runtime.Serialization.EnumMember(Value = "newFile")]
NewFile,
[System.Runtime.Serialization.EnumMember(Value = "check-status")]
CheckStatus,
}
I have written a BindModelAsync
public class FileStatusModelBuilder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var rawData = bindingContext.ValueProvider.GetValue(bindingContext.ModelName).FirstValue;
rawData = JsonSerializer.Serialize(rawData);
CheckStatus result = JsonSerializer.Deserialize<CheckStatus>(rawData);
bindingContext.Result = ModelBindingResult.Success(result);
return Task.CompletedTask;
}
}
When passing in newFile
the binding works and will bind to NewFile
, but as soon as I use check-status
I get the following error.
The JSON value could not be converted to [...].CheckStatus. Path: $ | LineNumber: 0 | BytePositionInLine: 15.
I don't want to use newtonsoft
but would like to be able to have an enum with a dash in the EnumMember
value.