Estou mudando meu código do .NET Core 2.x para o .NET Core 3.x (ou seja, use a biblioteca nativa System.Text.Json
). Ao fazer isso, deparei-me com alguns problemas de como o Newtonsoft.Json
suporte anterior para enumerações anuláveis não tem um caminho de migração claro no momento - parece que não há suporte no .NET Core 3.x ?.
Por exemplo, usando Newtonsoft.Json
, o conversor JSON suportava enumerações anuláveis, da seguinte forma:
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
}
A versão atual da biblioteca nativa
System.Text.Json
parece não suportar isso.
Como eu resolvo este problema? Não consigo migrar meu código!
c#
.net-core
system.text.json
Svek
fonte
fonte
Respostas:
Infelizmente, atualmente não há suporte "
System.Text.Json
pronto para uso " para converter enumerações anuláveis.A solução. Use um conversor personalizado.
Você pode anexá-lo à sua propriedade decorando-o com o conversor personalizado:
Aqui está o conversor:
Espero que ajude até que haja suporte nativo sem a necessidade de um conversor personalizado!
fonte
Você deve conseguir recuperar seu comportamento original instalando o nuget Newtonsoft JSON e colocando isso no seu código, suponho que você esteja migrando um aplicativo ASP:
fonte
System.Text.Json
fornecido com o ASP.NET Core 3.x. --- A "migração" mencionada era de 2.x para 3.x