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

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

Verwenden Sie die neuen `JsonNamingPolicy.SnakeCaseLower` (und SnakeCaseUpper, KebabCaseLower, KebabCaseUpper) in .NET 8, um JSON in snake_case / kebab-case via System.Text.Json zu serialisieren — ohne eigenen Converter.

.NET 8 bringt mehrere neue Naming Policies für den System.Text.Json-Serializer mit, namentlich:

Sehen wir uns die serialisierten Ausgaben für jede an. Dafür verwenden wir eine Car-Klasse mit folgender Definition:

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

Und serialisieren folgende Instanz:

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

snake_case in Kleinbuchstaben

Für die Serialisierung in snake_case in Kleinbuchstaben setzen Sie in den JsonSerializerOptions JsonNamingPolicy.SnakeCaseLower als PropertyNamingPolicy:

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

Die Ausgabe lautet:

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

SNAKE_CASE in Großbuchstaben

Wie oben, nur mit JsonNamingPolicy.SnakeCaseUpper als Naming Policy. Die Ausgabe lautet:

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

kebab-case in Kleinbuchstaben

Für die Serialisierung in kebab-case in Kleinbuchstaben setzen Sie in den JsonSerializerOptions JsonNamingPolicy.KebabCaseLower als PropertyNamingPolicy:

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

Das ergibt folgendes JSON:

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

KEBAB-CASE in Großbuchstaben

Wie im vorigen Beispiel, aber mit JsonNamingPolicy.KebabCaseUpper als Naming Policy. Sie erhalten:

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

< Zurück