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

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

Usa los nuevos `JsonNamingPolicy.SnakeCaseLower` (y SnakeCaseUpper, KebabCaseLower, KebabCaseUpper) de .NET 8 para serializar JSON en snake_case / kebab-case con System.Text.Json, sin necesidad de un converter personalizado.

.NET 8 introduce varias políticas de nombrado nuevas que se pueden usar con el serializador System.Text.Json. Para nombrarlas:

Veamos la salida serializada de cada una. Para ello, vamos a usar una clase Car con la siguiente definición:

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

Y vamos a serializar la siguiente instancia:

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

snake_case en minúsculas

Para serializar usando snake_case en minúsculas, hay que especificar JsonNamingPolicy.SnakeCaseLower como PropertyNamingPolicy dentro del JsonSerializerOptions del serializador. Así:

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

Y la salida será:

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

SNAKE_CASE en mayúsculas

Igual que arriba, usando JsonNamingPolicy.SnakeCaseUpper como política de nombrado de propiedades. La salida será:

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

kebab-case en minúsculas

Para serializar usando kebab-case en minúsculas, hay que especificar JsonNamingPolicy.KebabCaseLower como PropertyNamingPolicy dentro del JsonSerializerOptions del serializador. Así:

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

Esto producirá el siguiente JSON:

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

KEBAB-CASE en mayúsculas

Igual que el ejemplo anterior, pero usando JsonNamingPolicy.KebabCaseUpper como política de nombrado de propiedades. Obtendrás la siguiente salida:

{"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.

< Volver