Maison >développement back-end >C++ >Json.Net peut-il configurer le comportement du setter privé sans modifier le code source ?

Json.Net peut-il configurer le comportement du setter privé sans modifier le code source ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 06:28:12425parcourir

Can Json.Net Configure Private Setter Behavior Without Modifying Source Code?

Configuration du comportement des setters privés dans Json.Net

Bien que Json.Net propose un attribut pour adresser les setters privés, une option par défaut pour cette fonctionnalité est souvent recherché. En l'absence de modifications du code source, la question se pose : existe-t-il un paramètre configurable pour obtenir ce comportement ?

Réponse

Option 1 : Utiliser le [ JsonProperty] Attribute

Au lieu de s'appuyer sur un attribut spécifique, utilisez simplement le L'attribut [JsonProperty] sert à renseigner les propriétés en lecture seule pendant la désérialisation. Un exemple :

[JsonProperty]
public Guid? ClientId { get; private set; }

Option 2 : Solution basée sur un constructeur

Une approche alternative consiste à créer un constructeur avec un paramètre correspondant à la propriété privée :

public class Foo
{
    public string Bar { get; }

    public Foo(string bar)
    {
        Bar = bar;
    }
}

Cela permet les éléments suivants :

string json = "{ \"bar\": \"Stack Overflow\" }";

var deserialized = JsonConvert.DeserializeObject<Foo>(json);
Console.WriteLine(deserialized.Bar); // Stack Overflow

Les avantages de cette approche include :

  • Aucune attribution de propriétés n'est requise.
  • Compatibilité avec les deux { get ; ensemble privé; } et { obtenir ; }.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn