コンテンツにスキップ

C# json シリアル化と逆シリアル化

C#でも他言語と同様に、jsonとオブジェクトを相互変換するためのメソッドが用意されている

System.Text.Json

Newtonsoft.JsonSystem.Text.Json

Usage

シリアル化(シリアライズ)

C#オブジェクトをjsonに変換

string jsonString = JsonSerializer.Serialize(person);
File.WriteAllText("sample.json", jsonString);

逆シリアル化(デシリアライズ)

  • 事前に変換先のC#オブジェクトを用意
  • jsonとオブジェクトのプロパティ名を一致させる必要がある
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
{
  "Name": "Tom",
  "Age": 21
}

jsonファイルを読み込み、C#オブジェクトに変換

using System.Text.Json;

namespace Sample
{
  class Program
  {
    string filePath = "../sample/sample.json";
    string? json = File.ReadAllText(filePath);
    var person = JsonSerializer.Deserialize<Person>(json);
  }
}

Reference

シリアル化 (C#)
.NET 内で JSON のシリアル化と逆シリアル化 (マーシャリングとマーシャリングの解除) を行う方法
System.Text.Json でプロパティの名前と値をカスタマイズする方法
System.Text.Json で文字エンコードをカスタマイズする方法 Newtonsoft.Json と System.Text.Json を比較して、System.Text.Json に移行する