カテゴリ: C# 更新日: 2025/11/12

C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)

C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)

先生と生徒の会話形式で理解しよう

生徒

「先生、C#でデータをJSONファイルに保存したり、読み込んだりする方法ってありますか?」

先生

「もちろんありますよ。C#ではJsonSerializerNewtonsoft.Jsonというライブラリを使って、簡単にJSONの読み書きができます。」

生徒

「JSONってよく聞きますけど、そもそも何なんですか?」

先生

「JSONはデータを保存したりやり取りしたりするためのフォーマットで、『JavaScript Object Notation』の略なんです。C#でもよく使われていますよ。」

生徒

「なるほど!それじゃあ、C#でどうやってJSONを扱うのか教えてください!」

先生

「いいですね。それでは、C#でのJSONファイルの読み書き方法を、順番に見ていきましょう。」

1. JSONとは?そしてC#での活用場面

1. JSONとは?そしてC#での活用場面
1. JSONとは?そしてC#での活用場面

JSON(ジェイソン)は、データを「人間にも読みやすい形」で保存できるテキスト形式です。たとえば、設定情報やアプリのデータ保存、APIとの通信などでよく使われます。C#でJSONを扱うと、プログラム内のデータをファイルに保存したり、他のアプリとデータをやり取りしたりできるようになります。

JSONの基本構造は「キー」と「値」の組み合わせです。例えば次のようなものです。


{
    "Name": "太郎",
    "Age": 25,
    "City": "東京"
}

このように、名前と値をペアで表現することで、どんなデータでも整理して保存できます。

2. JsonSerializerを使ったJSONの読み書き

2. JsonSerializerを使ったJSONの読み書き
2. JsonSerializerを使ったJSONの読み書き

C#の標準ライブラリ(.NET 5以降)では、System.Text.Json名前空間のJsonSerializerクラスを使って簡単にJSONを扱うことができます。特別な外部ライブラリをインストールしなくても使えるのが利点です。

まずは、オブジェクトをJSONファイルに書き出す例を見てみましょう。


using System;
using System.IO;
using System.Text.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "太郎", Age = 25, City = "東京" };

        string jsonString = JsonSerializer.Serialize(person);
        File.WriteAllText("person.json", jsonString);

        Console.WriteLine("JSONファイルを書き出しました。");
    }
}

JSONファイルを書き出しました。

JsonSerializer.Serialize()メソッドでオブジェクトをJSON文字列に変換し、それをFile.WriteAllText()でファイルに保存しています。

次に、保存したJSONファイルを読み込む例を見てみましょう。


using System;
using System.IO;
using System.Text.Json;

class Program
{
    static void Main()
    {
        string jsonString = File.ReadAllText("person.json");
        Person person = JsonSerializer.Deserialize<Person>(jsonString);

        Console.WriteLine($"名前: {person.Name}");
        Console.WriteLine($"年齢: {person.Age}");
        Console.WriteLine($"都市: {person.City}");
    }
}

名前: 太郎
年齢: 25
都市: 東京

Deserialize()メソッドを使うことで、JSONデータを元のクラスに戻せます。これにより、ファイルに保存したデータをそのままC#のオブジェクトとして扱うことができます。

3. Newtonsoft.Json(Json.NET)を使う方法

3. Newtonsoft.Json(Json.NET)を使う方法
3. Newtonsoft.Json(Json.NET)を使う方法

次に紹介するのは、C#で長年使われている人気ライブラリNewtonsoft.Json(別名:Json.NET)です。標準ライブラリより柔軟に設定でき、読みやすいJSONを生成できます。使うには、Visual StudioのNuGetパッケージマネージャーから「Newtonsoft.Json」をインストールしてください。

書き出し(シリアライズ)の例は次の通りです。


using System;
using System.IO;
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "花子", Age = 30, City = "大阪" };

        string json = JsonConvert.SerializeObject(person, Formatting.Indented);
        File.WriteAllText("person_newton.json", json);

        Console.WriteLine("Newtonsoft.JsonでJSONを書き出しました。");
    }
}

Newtonsoft.JsonでJSONを書き出しました。

Formatting.Indentedを指定することで、インデント(空白)がついた読みやすいJSONになります。結果は次のように整形されます。


{
  "Name": "花子",
  "Age": 30,
  "City": "大阪"
}

同様に、読み込み(デシリアライズ)は次のように行います。


using System;
using System.IO;
using Newtonsoft.Json;

class Program
{
    static void Main()
    {
        string json = File.ReadAllText("person_newton.json");
        Person person = JsonConvert.DeserializeObject<Person>(json);

        Console.WriteLine($"名前: {person.Name}");
        Console.WriteLine($"年齢: {person.Age}");
        Console.WriteLine($"都市: {person.City}");
    }
}

名前: 花子
年齢: 30
都市: 大阪

Newtonsoft.Jsonは、日付や特殊文字の扱いなども柔軟に設定できるため、より複雑なデータ構造を扱う際に便利です。

4. JsonSerializerとNewtonsoft.Jsonの違い

4. JsonSerializerとNewtonsoft.Jsonの違い
4. JsonSerializerとNewtonsoft.Jsonの違い

最後に、この2つの違いを整理しておきましょう。

  • JsonSerializer(System.Text.Json):標準ライブラリ。高速で軽量。外部ライブラリ不要。
  • Newtonsoft.Json:外部ライブラリだが高機能。フォーマット設定や特殊ケースに強い。

軽い処理やシンプルな用途にはJsonSerializer、カスタマイズや細かい設定をしたいときはNewtonsoft.Jsonを使うのが一般的です。

カテゴリの一覧へ
新着記事
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
COBOLのUSAGE句(DISPLAY・COMPなど)をやさしく解説!初心者でもわかる効率化の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド