本文へスキップ
BecomeCoder

C#実践コース · 第3章 ビルド・ツールとプロジェクト基礎 · レッスン20

設定ファイル(JSON)

ブラウザで完結

導入

前レッスンの構成ファイルの中身——JSON形式の設定——を、実際にC#で読み込んでみましょう。値を設定ファイルに外出しすれば、再ビルドなしで挙動を変えられます。

図解

flowchart LR
    JSON["appsettings.json<br/>{ &quot;DiscountRate&quot;: 0.1 }"] --> LOAD["読み込み"] --> BIND["C♯の型にバインド"] --> APP["settings.DiscountRate として使う"]

サンプル

// 実務ではファイル(appsettings.json)から読むが、ここでは文字列で表現
string configJson = """
{ "AppName": "BecomeCoder", "DiscountRate": 0.1, "MaxItems": 20 }
""";

var settings = JsonSerializer.Deserialize<AppSettings>(configJson)!;
Console.WriteLine($"{settings.AppName}: 割引{settings.DiscountRate * 100}% / {settings.MaxItems}件");
// BecomeCoder: 割引10% / 20件

record AppSettings(string AppName, double DiscountRate, int MaxItems);
  • 設定値をJSONに外出しすれば、再ビルドなしで挙動を変えられる
  • JSONのキーとプロパティ名が一致すればDeserializeで型に丸ごと読み込める
  • ASP.NET Coreではappsettings.jsonが自動で読み込まれる(芯は同じ)

演習

string configJson = """
{ "SiteName": "サンプル書店", "TaxRate": 0.1 }
""";

// TODO: SiteSettings record を定義して読み込み、"サンプル書店(税率10%)" と出力してください
___
  • 期待される出力: サンプル書店(税率10%)
ヒント1を見る

record SiteSettings(string SiteName, double TaxRate);

ヒント2を見る

var s = JsonSerializer.Deserialize<SiteSettings>(configJson)!; Console.WriteLine($"{s.SiteName}(税率{s.TaxRate * 100}%)");

まとめ

  • 設定ファイル(JSON)に値を外出しすれば再ビルド不要で変更できる
  • キー名一致で型に読み込める
  • 秘密情報は環境変数

次回: 表形式データの定番「CSV」です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。