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
Creare un webhook in Azure DevOps
Utilizzare Azure Cosmos DB con i vettori
Cambiare la chiave di partizionamento di Azure Cosmos DB
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Change tracking e composition in Entity Framework
Scrivere selettori CSS più semplici ed efficienti con :is()
Cancellare una run di un workflow di GitHub
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Recuperare App Service cancellati su Azure
Migrare una service connection a workload identity federation in Azure DevOps
Combinare Container Queries e Media Queries
Eliminare una project wiki di Azure DevOps