1. はじめに
- C#でJSONのクラスを定義して、ファイルへ入出力したい
2. 開発環境
- VisualStudio 2022
- .NET Framework 4.8
- Newtonsoft.Json (NuGet)
3. コンソールアプリを作成
3.1. 新規プロジェクトを作成する
3.2. Newtonsoft.Jsonをインストールする
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. プログラムを実行する
5. ソースコード
6. 参考文献