JSON(JavaScript Object Notation)は、ウェブアプリケーションやAPIで広く使用されている軽量のデータ交換フォーマットです。C#では、オブジェクトをJSON文字列に変換する効率的な方法がいくつか提供されており、他のシステムとの通信を簡素化し、人間が読み取れるデータストレージを可能にします。この記事では、この変換のための3つの一般的な方法を調査し、それぞれの長所と短所を比較します。
目次
JavaScriptSerializer
を使用したオブジェクトのJSONへの変換JsonConvert.SerializeObject
による効率的なJSONシリアライゼーションJObject.FromObject
によるきめ細かい制御
JavaScriptSerializer
を使用したオブジェクトのJSONへの変換
System.Web.Script.Serialization.JavaScriptSerializer
クラスは、JSONシリアライゼーションへの直接的なアプローチを提供します。しかし、これはレガシーコンポーネントであり、より近代的なライブラリの特徴やパフォーマンスを欠いています。新規プロジェクトでは、より新しい代替手段を使用することをお勧めします。
using System;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(person);
Console.WriteLine(jsonString); // 出力: {"Name":"John Doe","Age":30}
}
}
注記: System.Web.Extensions
への参照が必要です(通常は.NET Frameworkアセンブリにあります)。.NET Core以降のバージョンでは推奨されません。
JsonConvert.SerializeObject
による効率的なJSONシリアライゼーション
Newtonsoft.Json(Json.NETと呼ばれることが多い)は、C#で広く使用されている高性能なJSONライブラリです。JSONのシリアライゼーションとデシリアライゼーションのための堅牢で機能豊富なソリューションを提供します。このメソッドを使用するには、Newtonsoft.Json
NuGetパッケージをインストールします。
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // 出力: {"Name":"John Doe","Age":30}
}
}
JsonConvert.SerializeObject
は簡潔で効率的です。Newtonsoft.Jsonは、nullの処理、フォーマットなど、幅広いカスタマイズオプションを提供します。
JObject.FromObject
によるきめ細かい制御
Newtonsoft.Jsonライブラリの一部でもあるJObject
クラスは、シリアライゼーション前にJSON構造をきめ細かく制御できます。これは、文字列に変換する前にJSON表現を操作する場合に特に役立ちます。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JObject jsonObject = JObject.FromObject(person);
string jsonString = jsonObject.ToString();
Console.WriteLine(jsonString); // 出力: {"Name":"John Doe","Age":30}
}
}
単純なオブジェクトの場合、JsonConvert.SerializeObject
と似ていますが、JObject.FromObject
は複雑なシナリオでより大きな柔軟性を提供します。最終的なシリアライゼーションの前に、JObject
内のプロパティを簡単に追加、削除、または変更できます。
結論: 最新のC#開発では、パフォーマンス、機能、柔軟性から、Newtonsoft.JsonのJsonConvert.SerializeObject
とJObject.FromObject
メソッドを強くお勧めします。Newtonsoft.Json
NuGetパッケージをインストールすることを忘れないでください。