JsonException:el valor JSON no se pudo convertir a Enum
Cuando usa System.Text.Json para deserializar JSON que contiene la representación de cadena de una enumeración, obtiene la siguiente excepción:
El siguiente JSON causaría esta excepción. La conferencia es una enumeración y utiliza la representación de cadena "NFC" en lugar del valor numérico de la enumeración.
{
"TeamName": "Detroit Lions",
"Conference": "NFC"
}
Code language: JSON / JSON with Comments (json)
Solución
De forma predeterminada, System.Text.Json no maneja cadenas de enumeración.
Debe pasar un JsonStringEnumConverter a través de JsonSerializerOptions y pasar las opciones al deserializar:
var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringEnumConverter());
var team = JsonSerializer.Deserialize<NFLTeam>(json, options);
Code language: C# (cs)
El mismo problema ocurre con la serialización. Si no pasa el JsonStringEnumConverter, serializará los objetos con el valor numérico de enumeración, en lugar de su representación de cadena.