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.