
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.Json
とNewtonsoft.Json
ライブラリの両方を紹介しましたが、どちらも簡単にJSONデータを扱うことができます。プロジェクトの要件や好みに合わせて、適切な方法を選択してください。
JSONの扱いは、C#開発者にとって必須のスキルです。この記事を参考に、JSONデータを活用したアプリケーション開発に挑戦してみてください。