はじめに
C#で人気のライブラリ、NewtonSoft Json.NETを使って、「JSONデータを作成する方法」を分かりやすく解説します。
記事内で説明している内容は、公式サイトのサンプルをベースにしています。
Json.NETってそもそも何?という方は、以下の紹介記事からをご覧ください。
JSon.NETのインストール方法については以下の記事をご覧ください。
環境
この記事の内容は、以下の環境で作成しています。
環境 | バージョンなど | 備考 |
VisualStudio | 2019 Community | 2017でもOK |
.NET | 4.7.2 | |
プロジェクトの形式 |
C# コンソールプログラム |
|
Json.net | ||
OS | Windows7 | Win10, 11 でもOK |
実行結果
後述する「JSONファイル作成するコード」の実行結果です。Cドライブの「ProgramDataフォルダ」に以下のJSONファイルが作成されます。
{
"Email": "james@example.com",
"Active": true,
"CreatedDate": "2013-01-20T00:00:00Z",
"Roles": [
"User",
"Admin"
]
}
全体コード
「JSONファイル作成するコード」 の全体コードです。詳細は「コードのポイント」で詳しく解説します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; // ファイル出力に必要です。
using Newtonsoft.Json; // Json.net用に必要です。
namespace ConsoleApp_jsonTest2
{
//
// シリアライズ用のデータクラスです
//
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
class Program
{
static void Main(string[] args)
{
//
// データ用のクラスオブジェクトを作成します。
//
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = new List<string>
{
"User",
"Admin"
}
};
//
// 作成したオブジェクトのデータをJSONにシリアライズします
// 一つ目に引数に、シリアライズするオブジェクトを指定します
// 二つ目に引数に、インデントの有無を指定します。
//
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
//
// シリアライズ済みデータ(文字列)をファイルに書き込みます
//
File.WriteAllText(@"C:\ProgramData\Account.json", json);
}
}
}
コードのポイント
データ用クラスの定義
Json.NETで、JSONを作成するには「Email」や「CreateDate」など、JSONに書き込みたい内容をクラスとして定義する必要があります。
配列や日付の入ったJSONファイルを作成する場合は、IList<>型や、DateTime型のメンバ変数を作成してください。
ここで定義した「クラスのメンバ変数名」が「JSONファイルの変数名」として使われます。
//
// シリアライズ用のデータクラスです
//
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
「クラスの変数名」と「JSONの変数名」を別にしたい場合は『JsonProperty』を使います。詳しくはこちらの記事を参照してください。
JSON用のデータの作成
定義したクラスにデータをセットしてクラスオブジェクト(変数)を作成します。
Emailのアドレスなど、ここでセットした内容が「JSONファイルの各変数のデータ」として使われます。
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = new List<string>
{
"User",
"Admin"
}
};
JSONファイル用の文字列の作成
クラスオブジェクトからJSON形式の文字列を生成します(シリアライズ)。
引数目の1つ目には、前述したデータ用クラスのオブジェクト、二つ目には、作成するJSONファイルのインデント方式を指定します。
シリアライズが完了すると、「JSON形式の文字列」が返されます。
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
インデントの方式
インデント方式は以下の2種類です。
インデントなし | Formatting.None |
インデントあり | Fromatting.Indented |
ファイル出力
前述した「JSON形式の文字列」をファイルに書き込みます。文字列はすでにJSON形式になっているので、そのままファイルに書き込むだけでOKです。
//
// シリアライズ済みデータ(文字列)をファイルに書き込みます
//
File.WriteAllText(@"C:ProgramDataAccount.json", json);
まとめ
C#で人気のライブラリ、NewtonSoft Json.NETを使って、JSONファイルを作成する方法を紹介しました。参考になればうれしいです。
【おすすめ】UdemyでC#のスキルを上げる
C#のスキルを上げるには、Udemyの動画講座がおすすめです。「C#で読みやすいコードを書く50の方法」「保守性の高いコードの書き方」など、脱初心者/スキルアップのための講座が多数公開されています。
1講座 2440円程度で返金保証あり。視聴期間無制限なので「自分のペースでコスパ良くスキルアップしたい」「失敗したくない」という方におすすめです。
もっと詳しくJson.NETを知りたい
このブログでは、Json.NETの以下内容も解説してます。興味のある方は以下からご覧ください。
Dictionaryのシリアライズ・デシリアライズ
JObjectを使用したパース
JSONデータと違う名前をメンバ変数につける方法
質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。