web-dev-qa-db-ja.com

ASP.NET MVC Core 3.0 API列挙型を文字列にシリアル化

ASP.NET MVC Core 3.0でEnumフィールドをIntではなくStringにシリアル化する方法は?古い方法ではできません。

services.AddMvc().AddJsonOptions(opts =>
{
    opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})

エラーが発生します:

「Newtonsoft.Json.Converters.StringEnumConverter」から「System.Text.Json.Serialization.JsonConverter」に変換できません

11
Andrei

新しいSystem.Text.Jsonシリアル化

ASP.NET MVC Core 3.0は、組み込みのJSONシリアル化を使用します。使用する System.Text.Json.Serialization.JsonStringEnumConverter( "Json"プレフィックス付き):

services
    .AddMvc()
    // Or .AddControllers(...)
    .AddJsonOptions(opts =>
    {
        opts.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    })

詳細 ここ 。ドキュメントは here にあります。

Newtonsoft.Jsonを使用する場合

「従来の」Newtonsoft.Jsonシリアル化を使用することもできます。

services
    .AddControllers()
    .AddNewtonsoftJson(opts => opts.Converters.Add(new StringEnumConverter()));
20
Andrei