C#でJSONデータを扱う方法|シリアライズとデシリアライズ入門

先生

C#でJSONを自由自在に操る!シリアライズとデシリアライズの基本をマスターして、データ処理の達人になろう!

C#でJSONを扱うための基本:シリアライズとデシリアライズ

C#でJSONデータを扱うことは、現代のアプリケーション開発において非常に重要です。APIとの連携、設定ファイルの読み書き、データの永続化など、様々な場面でJSONが利用されます。この記事では、C#でJSONデータを扱うための基本的な方法、特にシリアライズ(オブジェクトをJSON形式に変換)とデシリアライズ(JSON形式をオブジェクトに変換)について、初心者にもわかりやすく解説します。

C#でJSONを扱うには、いくつかの方法がありますが、ここではSystem.Text.Json名前空間を使用する方法と、より柔軟な操作が可能なNewtonsoft.Jsonライブラリ(Json.NET)を使用する方法を紹介します。

System.Text.Jsonは.NET Core 3.1以降、.NET 5以降に標準で組み込まれており、パフォーマンスに優れています。Newtonsoft.Jsonは、長い間利用されており、豊富な機能と実績があります。どちらを選ぶかは、プロジェクトの要件や好みに応じて決定できます。

System.Text.Jsonを使ったJSONのシリアライズ

System.Text.Jsonを使ってC#のオブジェクトをJSON文字列にシリアライズする方法を見ていきましょう。基本的な手順は、JsonSerializer.Serialize()メソッドを使用することです。

// シリアライズするクラス
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

// オブジェクトの作成
Person person = new Person
{
    FirstName = "John",
    LastName = "Doe",
    Age = 30
};

// シリアライズ
string jsonString = System.Text.Json.JsonSerializer.Serialize(person);
Console.WriteLine(jsonString); // 出力: {"FirstName":"John","LastName":"Doe","Age":30}

上記の例では、PersonクラスのインスタンスをJSON文字列に変換しています。JsonSerializer.Serialize()メソッドは、オブジェクトをJSON形式の文字列に変換し、その結果を返します。

System.Text.Jsonを使ったJSONのデシリアライズ

JSON文字列をC#のオブジェクトにデシリアライズするには、JsonSerializer.Deserialize()メソッドを使用します。

// JSON文字列
string jsonString = "{\"FirstName\":\"John\",\"LastName\":\"Doe\",\"Age\":30}";
// デシリアライズ
Person person = System.Text.Json.JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine(person.FirstName); // 出力: John
Console.WriteLine(person.LastName);  // 出力: Doe
Console.WriteLine(person.Age);       // 出力: 30

JsonSerializer.Deserialize<Person>(jsonString)は、JSON文字列をPersonクラスのインスタンスに変換します。型引数<Person>で、デシリアライズ先の型を指定します。

Newtonsoft.Json (Json.NET)を使ったJSONのシリアライズ

Newtonsoft.Jsonライブラリは、NuGetパッケージマネージャーからインストールする必要があります。Install-Package Newtonsoft.Jsonコマンドでインストールできます。

Newtonsoft.Jsonを使ったシリアライズも簡単です。JsonConvert.SerializeObject()メソッドを使用します。

// Newtonsoft.Jsonのインポート
using Newtonsoft.Json;

// シリアライズするクラス(例はSystem.Text.Jsonと同じ)
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

// オブジェクトの作成
Person person = new Person
{
    FirstName = "John",
    LastName = "Doe",
    Age = 30
};

// シリアライズ
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // 出力: {"FirstName":"John","LastName":"Doe","Age":30}

Newtonsoft.Json (Json.NET)を使ったJSONのデシリアライズ

Newtonsoft.Jsonを使ったデシリアライズも同様に簡単です。JsonConvert.DeserializeObject<T>()メソッドを使用します。

// JSON文字列
string jsonString = "{\"FirstName\":\"John\",\"LastName\":\"Doe\",\"Age\":30}";
// デシリアライズ
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine(person.FirstName); // 出力: John
Console.WriteLine(person.LastName);  // 出力: Doe
Console.WriteLine(person.Age);       // 出力: 30

参考リンク

まとめ

この記事では、C#でJSONデータを扱うための基本的な方法、シリアライズとデシリアライズについて解説しました。System.Text.JsonNewtonsoft.Jsonライブラリの両方を紹介しましたが、どちらも簡単にJSONデータを扱うことができます。プロジェクトの要件や好みに合わせて、適切な方法を選択してください。

JSONの扱いは、C#開発者にとって必須のスキルです。この記事を参考に、JSONデータを活用したアプリケーション開発に挑戦してみてください。