コレクション ユーティリティ

[C#] Dictionaryをjson文字列に変換する

2021年7月12日

Dictionary型のデータをjson文字列に変換するサンプルです。
日本語を扱う場合は注意が必要です。

サンプル

例1)Dictionaryをjsonに変換する

using System.Text.Json;

//Dictionaryデータを生成する
Dictionary dc = new Dictionary()
{
  {"01", "Apple"},
  {"02", "Orange"},
  {"03", "Peach"}
};

//jsonに変換する
string json = JsonSerializer.Serialize(dc);

json → {
"01":"Apple",
"02":"Orange",
"03":"Peach"
}

サンプル(日本語の場合)

日本語を扱う場合は、エンコードを指定する必要があります。
エンコードしないと、例えば"りんご"は"\u308A\u3093\u3054"のような文字になってしまいます。

例2)Dictionaryをjsonに変換する(日本語を含む)

using System.Text.Json;
using System.Text.Encodings.Web;
using System.Text.Unicode;

//Encode設定
var op = new JsonSerializerOptions
{
  Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
  WriteIndented = true
};

//Dictionaryデータを生成する
var dc = new Dictionary<string, string>()
{
  {"01", "りんご"},
  {"02", "みかん"},
  {"03", "もも"}
};

//jsonに変換する
string json = JsonSerializer.Serialize(dc, op);

json → {
"01": "りんご",
"02": "みかん",
"03": "もも"
}

備考

  • Dictionaryをjson文字列に変換したい場合は、System.Text.Json.JsonSerializer.Serializeを使用すると簡単です。
  • 日本語(Unicode文字)を扱う場合はエンコードの指定が必要な点にご注意ください。
  • Dictionaryのキーはint型の場合は不可です。

関連記事

-コレクション, ユーティリティ
-