カテゴリ: C# 更新日: 2026/03/06

C#でJSONを部分的に読み込み・書き換え!初心者向け操作ガイド

C#でJSONの部分的な読み込み・書き換えを行う方法
C#でJSONの部分的な読み込み・書き換えを行う方法

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

生徒

「C#を使って、大きなJSONファイルの一部だけを読み取ったり、特定の場所だけ書き換えたりする方法はありますか?」

先生

「もちろんありますよ!C#ではSystem.Text.Jsonという機能を使って、JSONを自由自在に操作することができます。」

生徒

「全部読み込むのは大変そうですが、ピンポイントで変更できるなら便利そうですね。難しくないですか?」

先生

「最初は少しコツがいりますが、仕組みを理解すれば簡単です。プログラミングが初めての方でもわかるように、順を追って解説していきますね!」

1. JSONとは何かを学ぼう

1. JSONとは何かを学ぼう
1. JSONとは何かを学ぼう

プログラミングの世界では、データを保存したり、別のコンピュータへ送ったりする際に「特定の形式」で書く決まりがあります。その中でも世界中で最も使われている形式の一つがJSON(ジェイソン)です。JSONは「JavaScript Object Notation」の略ですが、中身はただのテキスト(文字)です。人間が見ても読みやすく、コンピュータも処理しやすいのが特徴です。

例えば、名前と年齢をJSONで表現すると以下のようになります。


{
  "name": "田中太郎",
  "age": 25
}

このように、波括弧の中に「キー(項目名)」と「値(中身)」をセットにして記述します。C#というプログラミング言語を使えば、この文字情報を読み取って計算に使ったり、逆にプログラムで作ったデータをJSONとして保存したりすることが可能です。

2. C#でJSONを扱うための準備

2. C#でJSONを扱うための準備
2. C#でJSONを扱うための準備

C#でJSONを操作するには、マイクロソフトが提供している標準のライブラリ(便利な道具箱のようなもの)を使用します。その名前はSystem.Text.Jsonです。最近のC#であれば、特別な設定をしなくても最初から使えるようになっています。

プログラムの冒頭で「これからこの道具箱を使いますよ」と宣言するために、using System.Text.Json;using System.Text.Json.Nodes;と記述します。これにより、複雑な処理を自分で一から書かなくても、便利な命令を呼び出すだけでJSONの操作ができるようになります。パソコンを触ったことがない方でも、この一文を書くことが第一歩だと覚えておきましょう。

3. JsonNodeを使って部分的に読み込む方法

3. JsonNodeを使って部分的に読み込む方法
3. JsonNodeを使って部分的に読み込む方法

JSON全体をクラス(データの型)に変換する方法もありますが、一部だけを知りたいときはJsonNode(ジェイソン・ノード)を使うのが非常に便利です。これは、JSONを家系図のような「ツリー構造」として扱う手法です。

特定のデータだけを抜き出すサンプルコードを見てみましょう。ここでは、ゲームのキャラクターデータの中から「レベル」だけを取得しています。


using System;
using System.Text.Json.Nodes;

class Program
{
    static void Main()
    {
        // JSON形式の文字列
        string jsonString = "{\"name\": \"勇者\", \"level\": 15, \"item\": \"伝説の剣\"}";

        // 文字列をJsonNodeとして読み込む(パースする)
        JsonNode root = JsonNode.Parse(jsonString);

        // 「level」という項目だけを取り出す
        int level = (int)root["level"];

        Console.WriteLine("キャラクターのレベルは " + level + " です。");
    }
}

実行結果は以下のようになります。


キャラクターのレベルは 15 です。

このように、root["項目名"]と書くだけで、欲しいデータに直接アクセスできます。これをパースと呼びます。パースとは、単なる文字列をプログラムが理解できるデータ構造に解析・変換することです。

4. JSONの値を書き換える手順

4. JSONの値を書き換える手順
4. JSONの値を書き換える手順

読み込みができるようになったら、次は中身を書き換えてみましょう。例えば、キャラクターがレベルアップしたときに、JSON内の数値を更新したい場合があります。JsonNodeを使えば、特定の項目に新しい値を代入するだけで簡単に書き換えが可能です。


using System;
using System.Text.Json.Nodes;

class Program
{
    static void Main()
    {
        string jsonString = "{\"name\": \"魔法使い\", \"hp\": 50}";
        JsonNode root = JsonNode.Parse(jsonString);

        // hpの値を50から80に書き換える
        root["hp"] = 80;

        // 書き換えた結果を文字列として表示する
        Console.WriteLine(root.ToJsonString());
    }
}

実行結果は以下の通りです。


{"name":"魔法使い","hp":80}

元のデータは50でしたが、プログラムによって80に変更されました。ToJsonString()という命令を使うことで、メモリ上で書き換えたデータを再びJSON形式のテキストに戻すことができます。これをファイルに保存すれば、設定の変更などが完了します。

5. 新しい項目を追加したり削除したりする

5. 新しい項目を追加したり削除したりする
5. 新しい項目を追加したり削除したりする

既存の値を書き換えるだけでなく、新しい項目を付け足したり、不要な項目を消したりすることもできます。これはJsonObjectという型を利用するとスムーズです。例えば、ユーザー情報に「メールアドレス」という項目を追加したい場合や、パスワードのような機密情報を消したい場合に役立ちます。


using System;
using System.Text.Json.Nodes;

class Program
{
    static void Main()
    {
        string jsonString = "{\"id\": 1, \"user\": \"admin\"}";
        JsonObject obj = JsonNode.Parse(jsonString).AsObject();

        // 新しい項目「status」を追加する
        obj.Add("status", "active");

        // 既存の項目「id」を削除する
        obj.Remove("id");

        Console.WriteLine(obj.ToJsonString());
    }
}

実行結果は以下の通りです。


{"user":"admin","status":"active"}

Addは追加、Removeは削除という意味です。このように、C#では直感的な英語の命令を使ってJSONの形を自由に変えることができます。プログラミング未経験の方でも、この英単語の意味を知っていれば、何をしているのか想像しやすいはずです。

6. 複雑な階層構造(入れ子)の操作

6. 複雑な階層構造(入れ子)の操作
6. 複雑な階層構造(入れ子)の操作

実際のJSONはもっと複雑で、データの中にさらにデータが入っている入れ子構造(ネスト)になっていることがほとんどです。例えば「学校」の中に「クラス」があり、その中に「生徒」がいるような状態です。C#では、これらを階段を下りるように指定してアクセスします。


using System;
using System.Text.Json.Nodes;

class Program
{
    static void Main()
    {
        string jsonString = "{\"school\": {\"name\": \"中央高校\", \"location\": \"東京\"}}";
        JsonNode root = JsonNode.Parse(jsonString);

        // schoolの中にあるlocationを書き換える
        root["school"]["location"] = "大阪";

        Console.WriteLine(root.ToJsonString());
    }
}

実行結果は以下の通りです。


{"school":{"name":"中央高校","location":"大阪"}}

root["school"]["location"]のように、括弧を繋げて書くことで深い場所にあるデータもピンポイントで操作できます。これを「ドリルダウン」と呼ぶこともあります。深い階層でもやり方は変わらないので、一度覚えてしまえばどんなJSONでも怖くありません。

7. 配列データの読み込みと更新

7. 配列データの読み込みと更新
7. 配列データの読み込みと更新

JSONには「配列」という仕組みもあります。これは複数のデータを一列に並べたもので、[ ]という角括弧で囲まれます。例えば、買い物リストや複数のユーザー一覧などがこれに当たります。配列の中身を操作するときは、何番目のデータかを数字で指定します。プログラミングの世界では、数字は「0」から数え始めるのがルールです。


using System;
using System.Text.Json.Nodes;

class Program
{
    static void Main()
    {
        // フルーツのリスト(配列)
        string jsonString = "{\"fruits\": [\"りんご\", \"みかん\", \"ぶどう\"]}";
        JsonNode root = JsonNode.Parse(jsonString);

        // 0番目(最初)の「りんご」を「ばなな」に変更
        root["fruits"][0] = "ばなな";

        Console.WriteLine(root.ToJsonString());
    }
}

実行結果は以下の通りです。


{"fruits":["ばなな","みかん","ぶどう"]}

配列の中身を書き換える際も、[0][1]といった番号(インデックス)を指定するだけでOKです。たくさんのデータが並んでいても、この番号さえわかれば特定の一箇所だけを修正することが可能です。

8. JSON操作で気をつけるべきポイント

8. JSON操作で気をつけるべきポイント
8. JSON操作で気をつけるべきポイント

JSONを操作するときに初心者がつまずきやすいポイントがいくつかあります。まず、JSONは大文字と小文字を区別するという点です。例えば「Name」と「name」は別の項目として扱われます。プログラムが動かないときは、スペルミスがないか、大文字小文字が合っているかを確認しましょう。

また、存在しない項目を読み取ろうとするとエラーが発生することがあります。安全にプログラムを動かすためには、その項目が本当に存在するかどうかを確認する処理を入れるのが理想的ですが、まずは「正確な名前でアクセスする」ことを心がけましょう。パソコン操作に慣れていない方は、項目名をコピーして貼り付けることで間違いを防ぐことができます。

9. 文字列をきれいに整形して表示する

9. 文字列をきれいに整形して表示する
9. 文字列をきれいに整形して表示する

これまでの例では、書き換えた後のJSONが一行でぎゅっと詰まって表示されていました。これはコンピュータにとっては読みやすいですが、人間にとっては少し見にくいです。C#では、人間が読みやすいように改行や空白を入れる「整形(インデント)」機能も備わっています。

JsonSerializerOptionsという設定用の道具を使うことで、見た目をきれいに整えることができます。開発中にデータの中身を目で見て確認したいときに非常に役立ちます。こうした細かいテクニックを知っておくと、プログラミングの作業効率がぐんと上がります。

10. JSONとXMLの違いを知っておこう

10. JSONとXMLの違いを知っておこう
10. JSONとXMLの違いを知っておこう

JSONと同じようにデータを扱う形式としてXML(エックスエムエル)というものもあります。XMLは<name>田中</name>のようにタグを使ってデータを囲む形式です。昔からよく使われている形式ですが、最近のウェブ開発やアプリ開発では、よりシンプルで文字数が少ないJSONが好まれる傾向にあります。

C#はどちらの形式も得意としていますが、まずは主流であるJSONの操作に慣れることをおすすめします。JSONの部分的な読み込みや書き換えができるようになれば、設定ファイルの作成、Web APIからのデータ取得、ゲームのセーブデータ管理など、作れるものの幅が一気に広がります。一つずつ試して、楽しみながら学んでいきましょう!

カテゴリの一覧へ
新着記事
New1
C#
C#で日付操作の落とし穴と注意点を解説|初心者向けにわかりやすく丁寧に解説
New2
COBOL
COBOLのソース管理ツール(Git・SVN)の基本を完全解説!初心者でもわかるバージョン管理入門
New3
C#
C#でタイムスタンプの精度を上げるためのテクニックを徹底解説!(初心者向け)
New4
COBOL
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
人気記事
No.1
Java&Spring記事人気No1
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法