Start Debugging
2023-08-06 Atualizado 2023-11-05 dotnetdotnet-8 Edit on GitHub

.NET 8 JsonNamingPolicy: SnakeCaseLower e KebabCaseLower (System.Text.Json)

Use o novo `JsonNamingPolicy.SnakeCaseLower` (e SnakeCaseUpper, KebabCaseLower, KebabCaseUpper) do .NET 8 para serializar JSON em snake_case / kebab-case via System.Text.Json, sem precisar de converter customizado.

O .NET 8 traz várias novas naming policies que podem ser usadas com o serializador System.Text.Json. São elas:

Vamos olhar o resultado da serialização de cada uma. Para isso, vamos usar uma classe Car assim:

class Car
{
    public string Make { get; set; }
    public string ModelID { get; set; }
    public int LaunchYear { get; set; }
}

E vamos serializar a seguinte instância:

var car = new Car
{
    Make = "Mazda",
    ModelID = "MX-5",
    LaunchYear = 1989
};

snake_case em minúsculas

Para serializar em snake_case minúsculo, defina JsonNamingPolicy.SnakeCaseLower como PropertyNamingPolicy no JsonSerializerOptions. Assim:

var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower };
JsonSerializer.Serialize(car, options);

A saída será:

{"make":"Mazda","model_id":"MX-5","launch_year":1989}

SNAKE_CASE em maiúsculas

Da mesma forma, usando JsonNamingPolicy.SnakeCaseUpper como naming policy. A saída será:

{"MAKE":"Mazda","MODEL_ID":"MX-5","LAUNCH_YEAR":1989}

kebab-case em minúsculas

Para serializar em kebab-case minúsculo, defina JsonNamingPolicy.KebabCaseLower como PropertyNamingPolicy no JsonSerializerOptions. Assim:

var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.KebabCaseLower };
JsonSerializer.Serialize(car, options);

Isso vai gerar o seguinte JSON:

{"make":"Mazda","model-id":"MX-5","launch-year":1989}

KEBAB-CASE em maiúsculas

Como no exemplo anterior, mas usando JsonNamingPolicy.KebabCaseUpper para a naming policy. Você obterá:

{"MAKE":"Mazda","MODEL-ID":"MX-5","LAUNCH-YEAR":1989}

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar