C# Programming

C#における高速JSONシリアライゼーション

Spread the love

JSON(JavaScript Object Notation)は、ウェブアプリケーションやAPIで広く使用されている軽量のデータ交換フォーマットです。C#では、オブジェクトをJSON文字列に変換する効率的な方法がいくつか提供されており、他のシステムとの通信を簡素化し、人間が読み取れるデータストレージを可能にします。この記事では、この変換のための3つの一般的な方法を調査し、それぞれの長所と短所を比較します。

目次

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.SerializeObjectJObject.FromObjectメソッドを強くお勧めします。Newtonsoft.Json NuGetパッケージをインストールすることを忘れないでください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です