JSON

JSONデータのシリアライズ・ファイル書き込みを分かりやすく解説【C# Json.net】

はじめに

C#で人気のライブラリ、NewtonSoft Json.NETを使って、
JSONデータのシリアライズ・ファイル書き込みをする方法を分かりやすく解説します。

この記事の内容
  • JSONデータへのシリアライズ
  • JSONデータのファイル出力
この記事の対象読者
  • シリアライズ・ファイル出力の方法が知りたい
  • 公式サイトは英語でよく分からない
  • サクッとピンポイントな内容だけ知りたい

記事内で説明している内容は、公式サイトのこのページをベースにしています。
Json.NETってそもそも何?という方は、以下の短い記事をご覧ください。

環境

この記事の内容は、以下の環境で作成しています。

  • C# コンソールプログラム
  • .NET 4.7.2
  • Json.net v12.0.3

全体コードと実行結果

全体のコードと実行結果は以下の通りです。
ポイントとなるコードは、実行結果の後で説明しています。

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);
        }
    }
}

実行結果

実行結果は以下の通りです。
CドライブのProgramDataのフォルダ内に以下のJSONファイルが作成されます。

{
  "Email": "james@example.com",
  "Active": true,
  "CreatedDate": "2013-01-20T00:00:00Z",
  "Roles": [
    "User",
    "Admin"
  ]
}

シリアライズ

シリアライズは以下の一行です

string json = JsonConvert.SerializeObject(account, Formatting.Indented);

引数でのインデントの指定


1つ目の引数には、シリアライズするクラスの変数を指定しています。
2つ目の引数には、インデントの有無を指定します。種類は以下の2つのみです。

インデントなしFormatting.None
インデントありFromatting.Indented

ファイル出力

JSONデータのファイル出力も以下の一行です!

File.WriteAllText(@"c:\movie.json", json);

上のコードで既に文字列にシリアライズ済みなので、テキストファイルを作成するのと同様に、場所と出力する文字列を指定するだけで作成できます。

まとめ

C#で人気のライブラリ、NewtonSoft Json.NETを使って、
JSONデータへのシリアライズJSONデータのファイル出力する方法を紹介しました。参考になればうれしいです。

「JSONの読み込み・デシリアライズも知りたい!」という方や、「Dictionaryを使う方法が知りたい!」という方は、合わせて以下の記事もご覧ください。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です