web-dev-qa-db-ja.com

新しい `System.Text.Json`には必須のプロパティ属性がありますか?

MS docs をくまなく調べましたが、 NewtonSoft JsonPropertyRequired に相当する属性が見つかりません。

私がこれを探しているもの:

public class Videogame
{
    [JsonProperty(Required = Required.Always)]
    public string Name { get; set; }
}

何か足りないのですか、このレベルの検証はMicrosoftライブラリに存在しませんか?

5
THBBFT

[Required]に同梱されている一般的なSystem.ComponentModel.DataAnnotations属性を使用しています。 Newtonsoft.JsonSystem.Text.Jsonの両方で使用しました。

1

System.Text.Jsonの拡張機能として作成した、欠落している機能を提供するこのライブラリを試してください: https://github.com/dahomey-technologies/Dahomey.Json

JsonRequiredAttributeのサポートが見つかります。

public class Videogame
{
    [JsonRequired(RequirementPolicy.Always)]
    public string Name { get; set; }
}

名前空間Dahomey.Jsonで定義されている拡張メソッドSetupExtensionsをJsonSerializerOptionsで呼び出すことにより、json拡張をセットアップします。次に、通常のSytem.Text.Json APIを使用してクラスを逆シリアル化します。

JsonSerializerOptions options = new JsonSerializerOptions();
options.SetupExtensions();

const string json = @"{""Name"":""BGE2""}";
Videogame obj = JsonSerializer.Deserialize<Videogame>(json, options);