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

C#でNewtonsoft.Jsonを使いこなす!初心者向けJSON操作とデシリアライズ完全解説

C#でNewtonsoft.Jsonを使った高度なJSON操作を学ぼう
C#でNewtonsoft.Jsonを使った高度なJSON操作を学ぼう

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

生徒

「C#でWebサイトのデータや設定ファイルを扱いたいのですが、JSONという言葉をよく耳にします。これは一体何ですか?」

先生

「JSONは、データを保存したり交換したりするための世界共通の書き方のルールです。C#ではNewtonsoft.Jsonという便利な道具を使うことで、驚くほど簡単に扱えるようになりますよ。」

生徒

「初心者でも、複雑なデータをプログラムで読み書きできるようになりますか?」

先生

「もちろんです!まずは基本から、少し高度なテクニックまで順番に解説していきますね。」

1. JSONとNewtonsoft.Jsonの基礎知識

1. JSONとNewtonsoft.Jsonの基礎知識
1. JSONとNewtonsoft.Jsonの基礎知識

プログラミングの世界では、情報を整理して保存しておく必要があります。その際に最もよく使われる形式がJSON(ジェイソン)です。JSONは「JavaScript Object Notation」の略称ですが、JavaScriptだけでなく、C#やPythonなど、あらゆるプログラミング言語で利用されています。

JSONの特徴は、人間が見ても内容が理解しやすく、コンピュータにとっても処理が簡単であるという点です。例えば、名前や年齢、趣味といった情報を、波括弧や鍵括弧を使って整理します。しかし、C#でこのJSONをそのまま扱おうとすると、少し手間がかかります。そこで登場するのが、Newtonsoft.Json(ニュートンソフト・ジェイソン)というライブラリです。別名「Json.NET」とも呼ばれ、世界中のC#開発者に愛用されている非常に強力なツールです。

このライブラリを使う最大のメリットは、シリアライズデシリアライズが非常に簡単にできることです。シリアライズとは、C#で作ったオブジェクト(データのかたまり)をJSON形式の文字列に変換すること。逆にデシリアライズとは、JSON形式の文字列をC#で扱えるオブジェクトに戻すことを指します。この二つの言葉は、これからプログラミングを学ぶ上で何度も出てくる重要な用語なので、ぜひ覚えておきましょう。

2. Newtonsoft.Jsonの導入方法

2. Newtonsoft.Jsonの導入方法
2. Newtonsoft.Jsonの導入方法

Newtonsoft.Jsonは、C#の標準機能ではなく、外部の拡張機能として提供されています。これを使うためには、NuGet(ニューゲット)という仕組みを利用します。NuGetは、便利なプログラムの部品を簡単に自分のプロジェクトに取り込める「道具箱」のようなものです。

Visual Studioを使用している場合、「ソリューションのNuGetパッケージの管理」から「Newtonsoft.Json」を検索してインストールするだけで準備完了です。インストールが終わったら、プログラムの冒頭にusing Newtonsoft.Json;と記述することで、その魔法のような機能が使えるようになります。パソコンを触ったことがない方にとっては「インストール」と聞くと難しく感じるかもしれませんが、スマホでアプリを入れるのと同じくらい簡単な操作ですので安心してください。

3. オブジェクトをJSONに変換するシリアライズ

3. オブジェクトをJSONに変換するシリアライズ
3. オブジェクトをJSONに変換するシリアライズ

まずは、C#で作ったデータをJSON形式に変えてみましょう。これをシリアライズと呼びます。例えば、ゲームのプレイヤー情報を保存したい場合を考えてみます。名前、レベル、所持金といったデータを持つ「クラス」という設計図を作り、それをJSONに変換します。


using System;
using Newtonsoft.Json;

public class Player
{
    public string Name { get; set; }
    public int Level { get; set; }
    public int Gold { get; set; }
}

class Program
{
    static void Main()
    {
        // プレイヤーのデータを作成
        Player hero = new Player { Name = "勇者", Level = 10, Gold = 500 };

        // C#のオブジェクトをJSON文字列に変換
        string json = JsonConvert.SerializeObject(hero);

        Console.WriteLine("変換されたJSONデータ:");
        Console.WriteLine(json);
    }
}

上記のコードを実行すると、次のような結果が表示されます。


{"Name":"勇者","Level":10,"Gold":500}

JsonConvert.SerializeObjectという命令一回だけで、複雑なデータが一行のテキストにまとまりました。これがシリアライズの力です。これならファイルに保存したり、インターネットを通じて誰かに送ったりするのも簡単ですね。

4. JSONをオブジェクトに戻すデシリアライズ

4. JSONをオブジェクトに戻すデシリアライズ
4. JSONをオブジェクトに戻すデシリアライズ

次に、保存されたJSONデータを再びC#のオブジェクトとして読み込む方法を見ていきましょう。これをデシリアライズと呼びます。外部から受け取ったデータや、ファイルから読み込んだ設定情報をプログラムで活用するために不可欠な操作です。


using System;
using Newtonsoft.Json;

class Program
{
    static void Main()
    {
        // JSON形式の文字列(データ)
        string jsonInput = "{\"Name\":\"魔法使い\",\"Level\":15,\"Gold\":1200}";

        // JSON文字列をPlayerオブジェクトに変換
        Player loadedPlayer = JsonConvert.DeserializeObject<Player>(jsonInput);

        Console.WriteLine("読み込まれたデータ:");
        Console.WriteLine("名前:" + loadedPlayer.Name);
        Console.WriteLine("レベル:" + loadedPlayer.Level);
        Console.WriteLine("所持金:" + loadedPlayer.Gold);
    }
}

public class Player
{
    public string Name { get; set; }
    public int Level { get; set; }
    public int Gold { get; set; }
}

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


読み込まれたデータ:
名前:魔法使い
レベル:15
所持金:1200

JsonConvert.DeserializeObject<型名>と書くことで、テキストデータが自動的に指定した形式のデータに組み立て直されます。プログラムの中では、普通の変数と同じように名前やレベルを取り出して使うことができるようになります。

5. リストや配列をJSONで扱う方法

5. リストや配列をJSONで扱う方法
5. リストや配列をJSONで扱う方法

現実のプログラムでは、データは一つだけではなく、複数をまとめて扱いたいことが多々あります。例えば「お店の商品リスト」や「友達の連絡先一覧」などです。C#のList(リスト)という機能を使って、複数のデータをまとめてJSONにしてみましょう。


using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Item
{
    public string ItemName { get; set; }
    public int Price { get; set; }
}

class Program
{
    static void Main()
    {
        List<Item> shopList = new List<Item>
        {
            new Item { ItemName = "やくそう", Price = 8 },
            new Item { ItemName = "どくけしそう", Price = 10 },
            new Item { ItemName = "せいすい", Price = 20 }
        };

        // リスト全体をJSONに変換
        string jsonList = JsonConvert.SerializeObject(shopList, Formatting.Indented);

        Console.WriteLine("商品リストのJSON:");
        Console.WriteLine(jsonList);
    }
}

ここで注目してほしいのが、Formatting.Indentedというオプションです。これをつけると、人間が見やすいように改行やスペースを入れて整形してくれます。


[
  {
    "ItemName": "やくそう",
    "Price": 8
  },
  {
    "ItemName": "どくけしそう",
    "Price": 10
  },
  {
    "ItemName": "せいすい",
    "Price": 20
  }
]

このように、複数のデータは角括弧 [ ] で囲まれて出力されます。Newtonsoft.Jsonを使えば、リストの中にさらにリストがあるような複雑な構造でも、自動的に正しいJSON形式にしてくれます。

6. 特定の項目だけを変換の対象にするテクニック

6. 特定の項目だけを変換の対象にするテクニック
6. 特定の項目だけを変換の対象にするテクニック

高度な操作として、「特定のデータだけはJSONにしたくない」という場合があります。例えば、ユーザーのパスワードや、計算にしか使わない一時的な数値などです。このようなときは、JsonProperty属性やJsonIgnore属性を使います。


using System;
using Newtonsoft.Json;

public class UserAccount
{
    // JSONでの名前を「user_id」に変更する
    [JsonProperty("user_id")]
    public string UserId { get; set; }

    // この項目はJSONに含めない
    [JsonIgnore]
    public string InternalPassword { get; set; }

    public string Nickname { get; set; }
}

class Program
{
    static void Main()
    {
        UserAccount myAcc = new UserAccount 
        { 
            UserId = "ID12345", 
            InternalPassword = "secret_password", 
            Nickname = "たろう" 
        };

        string json = JsonConvert.SerializeObject(myAcc);
        Console.WriteLine(json);
    }
}

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


{"user_id":"ID12345","Nickname":"たろう"}

InternalPasswordは表示されず、UserIdは指定した通りuser_idという名前に変わっています。このように属性(アトリビュート)を使うことで、C#側の設計とJSON側の形式を柔軟に使い分けることができます。これはWeb開発などで、相手が指定したデータ形式に合わせる必要があるときに非常に役立つテクニックです。

7. 動的なJSON操作とJObjectの活用

7. 動的なJSON操作とJObjectの活用
7. 動的なJSON操作とJObjectの活用

これまでは、あらかじめ「クラス」というデータの型を用意していましたが、時には「どんな形のデータが来るかわからない」という状況もあります。そんな時に便利なのがJObjectというクラスです。これを使うと、辞書(ディクショナリ)のように自由自在にJSONの内容を書き換えたり、一部分だけを抽出したりできます。

例えば、巨大なJSONの中から特定の「天気」という項目だけを取り出したい場合、わざわざ全ての項目に対応するクラスを作るのは大変です。JObjectを使えば、ピンポイントでデータにアクセスできます。また、実行中に新しい項目を追加することも可能です。これは「動的(ダイナミック)」な操作と呼ばれ、プログラムの柔軟性を大幅に高めてくれます。

未経験の方には少し難しく感じるかもしれませんが、「設計図がなくてもその場でデータをいじれる便利な道具があるんだな」程度に考えておけば大丈夫です。まずは基本的なシリアライズとデシリアライズをマスターし、慣れてきたらこのJObjectに挑戦してみるのが上達への近道です。C#のNewtonsoft.Jsonは、初心者からプロフェッショナルまで、どんなニーズにも応えてくれる頼もしい存在なのです。

カテゴリの一覧へ
新着記事
New1
C#
C#で日付や時間の比較を行う方法を完全ガイド!初心者向けのDateTime比較(CompareTo・Equals)
New2
COBOL
COBOLのデータベース接続で使うホスト変数のデータ型と定義のコツを徹底解説!初心者でもわかる基本の考え方
New3
C#
C#でNewtonsoft.Jsonを使いこなす!初心者向けJSON操作とデシリアライズ完全解説
New4
C#
C#で経過時間を計測する方法を完全ガイド!初心者でもわかるStopwatchクラス入門
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
C#
C#のデータベース接続と例外処理を徹底解説!ADO.NETとEntity Frameworkの基本
No.5
Java&Spring記事人気No5
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.8
Java&Spring記事人気No8
C#
C#でファイルの行単位で読み書きするテクニックを徹底解説!初心者でもわかる入門ガイド