Estoy cambiando mi código de .NET Core 2.x a .NET Core 3.x (es decir, uso la biblioteca nativa System.Text.Json
). Al hacer esto, me encontré con algunos problemas con la forma en que el Newtonsoft.Json
soporte anterior para enumeraciones anulables no tiene una ruta de migración clara en este momento, ¿parece que no es compatible con .NET Core 3.x ?.
Por ejemplo, al usar Newtonsoft.Json
, el convertidor JSON admite enumeraciones anulables, así:
public enum UserStatus
{
NotConfirmed,
Active,
Deleted
}
public class User
{
public string UserName { get; set; }
[JsonConverter(typeof(StringEnumConverter))] // using Newtonsoft.Json
public UserStatus? Status { get; set; } // Nullable Enum
}
La versión actual de la biblioteca nativa
System.Text.Json
no parece admitir esto.
¿Cómo resuelvo este problema? ¡No puedo migrar mi código!
Respuestas:
Desafortunadamente, actualmente no hay soporte "
System.Text.Json
listo para usar " para convertir enumeraciones anulables.La solución. Utiliza un convertidor personalizado.
Adjuntaría puede adjuntarlo a su propiedad al decorarlo con el convertidor personalizado:
Aquí está el convertidor:
¡Espero que ayude hasta que haya soporte nativo sin la necesidad de un convertidor personalizado!
fuente
Debería poder recuperar su comportamiento original instalando Newtonsoft JSON nuget y colocando esto en su código, supongo que está migrando una aplicación ASP:
fuente
System.Text.Json
que vino con ASP.NET Core 3.x. --- La "migración" mencionada fue de 2.xa 3.x