web-dev-qa-db-fra.com

Le nouveau `System.Text.Json` a-t-il un attribut de propriété requis?

J'ai passé au peigne fin MS docs mais je ne trouve pas d'attribut équivalent à NewtonSoft JsonPropertyRequired .

Ce que je recherche:

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

Suis-je en train de manquer quelque chose ou ce niveau de validation n'existe-t-il pas dans la bibliothèque Microsoft?

5
THBBFT

J'utilise le générique [Required] attribut fourni dans System.ComponentModel.DataAnnotations. Je l'ai utilisé à la fois avec Newtonsoft.Json et System.Text.Json.

1
Daniel Stoyanoff

Veuillez essayer cette bibliothèque que j'ai écrite comme une extension de System.Text.Json pour offrir les fonctionnalités manquantes: https://github.com/dahomey-technologies/Dahomey.Json .

Vous trouverez un support pour JsonRequiredAttribute.

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

Configurez les extensions json en appelant JsonSerializerOptions la méthode d'extension SetupExtensions définie dans l'espace de noms Dahomey.Json. Désérialisez ensuite votre classe avec l'API Sytem.Text.Json standard.

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

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