コンテンツにスキップ

C# JSON

Newtonsoft.Jsonが主流であったが,現在はSystem.Text.Jsonが主流な模様

System.Text.Json

対応クラス定義

  • JsonPropertyNameでプロパティ名を指定
  • publicフィールドのみ?
  • クラスの入れ子も可能
public class SampleData {
    [JsonPropertyName("ID")] public int ID { get; set; }
    [JsonPropertyName("Name")] public string Name { get; set; }

    public SampleData(int id, string name) {
        ID = id;
        Name = name;
    }
}

シリアライズ

using System.Text.Json;
using System.Text.Json.Serialization;

SampleData data = new SampleData(100, "Name Sample");
JsonSerializerOptions option = new JsonSerializerOptions() {
    // 日本語がUnicode表記となるので全て許容
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
    // 整形されたJSONを出力(インデント有無)
    WriteIndented = true
};
string json = JsonSerializer.Serialize(data, option);

デシリアライズ

using System.Text.Json;
using System.Text.Json.Serialization;

string json = ~~~~~~~;
SampleData? data = JsonSerializer.Deserialize<Settings>(json);
if(data == null){
    return;
}

Reference

Article


最終更新日: August 14, 2023
作成日: August 14, 2023