Quando una nostra action Web API restituisce un tipo enum, esso viene per default rappresentato con il suo valore integer. Per migliorare la leggibilità della risposta, tuttavia, potremmo voler preferire che esso venga restituito come stringa.
Immaginiamo per esempio di avere definito un enum CustomerType:
public enum CustomerType { Normal, Premium, Platinum }
e di utilizzarlo in una classe Customer:
public class Customer { public string Name { get; set; } public CustomerType Type { get; set; } }
Una action che restituisca un elenco di customer ritornerà una risposta JSON simile alla seguente:
[ { "name": "Marco", "type": 2 }, { "name": "Carlo", "type": 0 } ]
Possiamo modificare questo comportamento e ritonare l'enum in formato string, semplicemente aggiungendo un JsonConverterAttribute, o sulla definizione dell'enum o sulla proprietà che lo utilizza, specificando che vogliamo utilizzare StringEnumConverter.
public class Customer { public string Name { get; set; } [JsonConverter(typeof(StringEnumConverter))] public CustomerType Type { get; set; } }
Se però vogliamo estendere questa logica a tutti gli enum che esponiamo, possiamo impostare questo setting a livello globale nel metodo ConfigureServices:
public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddJsonOptions(options => { options.SerializerSettings.Converters.Add(new StringEnumConverter()); options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; }); // .. altro codice qui }
In questo modo la risposta che otterremo sarà come la seguente:
[ { "name": "Marco", "type": "Platinum" }, { "name": "Carlo", "type": "Normal" } ]
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Il nuovo controllo Range di Blazor 9
Configurare e gestire sidecar container in Azure App Service
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Supportare la sessione affinity di Azure App Service con Application Gateway
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Collegare applicazioni server e client con .NET Aspire
Recuperare App Service cancellati su Azure
Fornire parametri ad un Web component HTML
Gestire i dati con Azure Cosmos DB Data Explorer
Disabilitare automaticamente un workflow di GitHub (parte 2)