.net 6 Web Api Jsonserializeroptions

4 min read Jun 03, 2024
.net 6 Web Api Jsonserializeroptions

Utilisation de JsonSerializerOptions dans ASP.NET Core 6 Web API

ASP.NET Core 6 Web API utilise le système de sérialisation JSON par défaut de .NET 6, System.Text.Json. Ce système offre un haut niveau de personnalisation et de contrôle sur la façon dont les données sont sérialisées et désérialisées. JsonSerializerOptions est un objet clé qui vous permet de configurer ces options.

Pourquoi utiliser JsonSerializerOptions?

JsonSerializerOptions vous permet de :

  • Contrôler le format de sortie JSON: Vous pouvez choisir de formater les noms de propriétés, d'utiliser des camelCase, de supprimer les espaces blancs, etc.
  • Gérer les propriétés ignorées: Vous pouvez spécifier quelles propriétés ne doivent pas être sérialisées.
  • Traiter les erreurs de sérialisation: Vous pouvez définir des stratégies pour gérer les erreurs potentielles lors de la sérialisation ou de la désérialisation.
  • Améliorer la performance: Vous pouvez optimiser la sérialisation et la désérialisation en utilisant des options spécifiques.

Exemples d'utilisation

Voici quelques exemples concrets de l'utilisation de JsonSerializerOptions :

Formatage des noms de propriétés

var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};

Ce code configure la sérialisation pour utiliser la convention camelCase pour les noms de propriétés.

Ignorer des propriétés

var options = new JsonSerializerOptions
{
    IgnoreNullValues = true
};

Ce code configure la sérialisation pour ignorer les propriétés null.

Traiter les erreurs de sérialisation

var options = new JsonSerializerOptions
{
    WriteIndented = true,
    PropertyNameCaseInsensitive = true,
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
    IncludeFields = true
};

Ce code configure la sérialisation pour écrire des sorties JSON avec indentation, autoriser les noms de propriétés en minuscules, utiliser la convention camelCase, ignorer les propriétés null lors de l'écriture et inclure les champs privés.

Application pratique

JsonSerializerOptions peut être appliqué à la fois au niveau global et au niveau des actions.

Niveau global:

public class Startup
{
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // ...

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers().WithMetadata(
                new ProducesAttribute("application/json"),
                new ConsumesAttribute("application/json"),
                new JsonSerializerOptions {
                    WriteIndented = true,
                    PropertyNameCaseInsensitive = true,
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
                    IncludeFields = true
                }
            );
        });
    }
}

Niveau d'action:

[HttpGet]
[Produces("application/json")]
public IActionResult GetProducts([FromServices] JsonSerializerOptions options) 
{
    // ...
    return Ok(JsonSerializer.Serialize(products, options));
}

En utilisant JsonSerializerOptions, vous pouvez facilement personnaliser le comportement de sérialisation et de désérialisation JSON dans votre application Web API ASP.NET Core 6. N'hésitez pas à explorer toutes les options disponibles pour obtenir le résultat souhaité.