C# System.Text.Json を使ったシリアライス、デシリアライズ

環境

Windows10 pro 64bit
Visual Studio 2019

追加が必要な参照

  • System.Text.Json
  • System.Memory

構造体の例

using System.Text.Json.Serialization;

struct JsonStruct
{
    [JsonPropertyName("Flag")]
    public bool Flag { get; set; }
    [JsonPropertyName("Name")]
    public string Name { get; set; }
    [JsonIgnore] // 無視する場合
    public string Test { get; set; }
}

クラスの例

using System.Text.Json.Serialization;

class JsonClass
{
    [JsonPropertyName("Flag")]
    public bool Flag { get; set; }
    [JsonPropertyName("Name")]
    public string Name { get; set; }
    [JsonIgnore] // 無視する場合
    public string Test { get; set; }
    public JsonClass() { } // クラスの場合デフォルトコンストラクタが必要
}

シリアライズ

using System.Text.Json;

JsonStruct js = new JsonStruct();
JsonSerializerOptions options = new JsonSerializerOptions()
{
    // 出力する際の設定など
    WriteIndented = false,
    IgnoreReadOnlyProperties = true,
    IgnoreNullValues = false,
};
string json_text = JsonSerializer.Serialize<JsonStruct>(js, options);

デシリアライズ

using System.Text.Json;

JsonStruct js = JsonSerializer.Deserialize<JsonStruct>(json_text);