はじめに
本記事では、JSON文字列を見やすくインデントするツールの紹介と、メインコードを説明を行います。
JSONとは
JSONとは、JavaScript Object Notationの略で、データを表現するための軽量なフォーマットです。
JSONは、オブジェクトや配列などの構造を持ち、キーと値のペアでデータを表現します。
JSONは、WebサービスやAPIなどでよく使われるデータ交換フォーマットです。
JSONのインデントとは
JSONのインデントとは、JSON文字列の可読性を高めるために、スペースやタブなどで階層構造を表現することです。
JSONのインデントは、人間がJSON文字列を見やすくするためのもので、コンピューターにとっては必要ありません。
しかし、JSONのインデントは、デバッグやテストなどでJSON文字列を確認する際に便利です。
ツールの紹介
コード
ソースコードは、以下のリンクからダウンロードできます。
コードのみの提供ですので動作させたい方は、開発環境が必要です。
開発環境は、Visual Studio 2022 を使用しています。
- JSON文字列をテキストボックスに入力すると、見やすくインデントしたJSON文字列がテキストボックスに出力されます。
- JSONファイルをウインドウにドラッグ&ドロップすると、見やすくインデントしたJSONファイルで上書きします。(ファイルは上書きされるので注意!!)
ツールの画面
メインコードの説明
C#でJSON文字列をインデントする方法はいくつかありますが、ここでは、System.Text.Jsonという名前空間に含まれるJsonSerializerというクラスを使う方法を紹介します。
JsonSerializerは、C#のオブジェクトとJSON文字列の相互変換を行うためのクラスです。
JsonSerializerには、WriteIndentedというプロパティがあり、これをtrueにすると、JSON文字列をインデント付きで出力することができます。
/// <summary>
/// JSON文字列を見やすくインデントします。
/// </summary>
/// <param name="intput">整形前のJSON文字列</param>
/// <returns>整形後のJSON文字列</returns>
private static string IndentJson(string inputJson)
{
// 入力チェック
if (string.IsNullOrWhiteSpace(inputJson)) { return string.Empty; }
// JSON文字列をオブジェクトに変換
var obj = JsonSerializer.Deserialize<object>(inputJson);
// インデントのオプションを設定
var options = new JsonSerializerOptions
{
WriteIndented = true
};
// オブジェクトをインデント付きのJSON文字列に変換
string indentedJson = JsonSerializer.Serialize(obj, options);
return indentedJson;
}
上記関数の引数「input」に以下のJSON文字列を入力すると、
{"name":"Alice","age":20,"hobbies":["reading","cooking","gaming"]}
以下のJSONが出力されます。
{
"name": "Alice",
"age": 20,
"hobbies": [
"reading",
"cooking",
"gaming"
]
}
まとめ
以上が、C#でJSON文字列を見やすくインデントする方法についての紹介でした。
JsonSerializerを使うと、簡単にJSON文字列をインデント付きで出力することができます。
ぜひ、このコードを改造して便利な自分用のツールを作成してみてください。