5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C#でJSONをファイル入出力する

Last updated at Posted at 2022-10-29

1. はじめに

  • C#でJSONのクラスを定義して、ファイルへ入出力したい

2. 開発環境

  • VisualStudio 2022
  • .NET Framework 4.8
  • Newtonsoft.Json (NuGet)

3. コンソールアプリを作成

3.1. 新規プロジェクトを作成する

  • コンソール アプリ (.NET Framwwork)を選択する
    image.png

  • フレームワークは「.NET Framework 4.8」を選択する
    image.png

  • プロジェクトの作成が完了した
    image.png

3.2. Newtonsoft.Jsonをインストールする

  • プロジェクトを右クリックして、NuGetパッケージの管理を選択する
    image.png

  • Newtonsoft.Json をインストールする
    image.png

  • 変更プレビューでOKボタンをクリックする
    image.png

3.3. JSONの定義クラスを作成する

PersonJson.cs
using Newtonsoft.Json;

namespace JsonFileIO.Jsons
{
    [JsonObject("PersonJson")]
    public sealed class PersonJson
    {
        [JsonProperty("Name")]
        public string Name { get; set; }    // 名前

        [JsonProperty("Age")]
        public int Age { get; set; }    // 年齢

        [JsonProperty("Height")]
        public double Height { get; set; }  // 身長

    }
}

3.4. JSONをシリアライズ、デシリアイズする

Program.cs
using JsonFileIO.Jsons;
using Newtonsoft.Json;
using System.Diagnostics;
using System.IO;

namespace JsonFileIO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            PersonJson person = new PersonJson();

            // データを設定
            person.Name = "YoshijiGate";
            person.Age = 27;
            person.Height = 190.5;

            // 1. JSON データにシリアライズ
            // --------------------------------
            var jsonWriteData = JsonConvert.SerializeObject(person);

            // C:¥work¥PersonJson.json.json を UTF-8 で書き込み用でオープン
            using (var sw = new StreamWriter(@"C:\work\PersonJson.json", false, System.Text.Encoding.UTF8))
            {
                // JSON データをファイルに書き込み
                sw.Write(jsonWriteData);
            }

            // 2. JSON データにデシリアライズ
            // --------------------------------
            // C:¥work¥test.json を UTF-8 で開く
            using (var sr = new StreamReader(@"C:\work\test.json", System.Text.Encoding.UTF8))
            {
                // 変数 jsonReadData にファイルの内容を代入 
                var jsonReadData = sr.ReadToEnd();

                // デシリアライズして person にセット
                person = JsonConvert.DeserializeObject<PersonJson>(jsonReadData);
            }

            // デバッグで確認
            Debug.WriteLine(person.Name);
            Debug.WriteLine(person.Age);
            Debug.WriteLine(person.Height);
        }
    }
}

4. 動作検証

4.1. 入力用のJSONファイルを準備する

test.json
{"Name":"YoshijiGate2","Age":22,"Height":222.2}

4.2. プログラムを実行する

  • JSONファイルが出力された
    image.png

image.png

  • JSONファイルが入力できた
    image.png

5. ソースコード

6. 参考文献

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?