Start Debugging
2023-08-06 更新日 2023-11-05 dotnetdotnet-8 Edit on GitHub

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

.NET 8 で追加された `JsonNamingPolicy.SnakeCaseLower` (および SnakeCaseUpper、KebabCaseLower、KebabCaseUpper) を使い、System.Text.Json で snake_case / kebab-case の JSON をカスタムコンバーターなしでシリアライズする方法を解説します。

.NET 8 では、System.Text.Json シリアライザーで使える新しい命名ポリシーがいくつか追加されました。一覧はこちらです。

それぞれシリアライズ結果を見ていきましょう。次のような Car クラスを使います。

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

そして、次のオブジェクトをシリアライズします。

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

小文字の snake_case

snake_case の小文字でシリアライズするには、シリアライザーの JsonSerializerOptions の中の PropertyNamingPolicyJsonNamingPolicy.SnakeCaseLower を指定します。次のとおりです。

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

出力はこうなります。

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

大文字の SNAKE_CASE

上と同じ要領で、プロパティ命名ポリシーに JsonNamingPolicy.SnakeCaseUpper を使います。出力はこうなります。

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

小文字の kebab-case

kebab-case の小文字でシリアライズするには、シリアライザーの JsonSerializerOptionsPropertyNamingPolicyJsonNamingPolicy.KebabCaseLower を指定します。次のとおりです。

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

これで次のような JSON が出力されます。

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

大文字の KEBAB-CASE

直前の例と同じく、プロパティ命名ポリシーに JsonNamingPolicy.KebabCaseUpper を使います。次のような出力が得られます。

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

< 戻る