Heim > Backend-Entwicklung > C++ > Wie kann ich mit privaten Settern während der JSON-Deserialisierung mit Json.Net umgehen?

Wie kann ich mit privaten Settern während der JSON-Deserialisierung mit Json.Net umgehen?

Linda Hamilton
Freigeben: 2025-01-04 11:23:39
Original
239 Leute haben es durchsucht

How Can I Handle Private Setters During JSON Deserialization with Json.Net?

Json.Net-Handhabung privater Setter

Json.Net verfügt nicht über ein integriertes Standardverhalten für die Behandlung privater Setter während der Deserialisierung. Es bietet jedoch eine Möglichkeit, dieses Verhalten mithilfe von Attributen explizit anzugeben.

[JsonProperty]-Attribut

Das [JsonProperty]-Attribut kann verwendet werden, um Json.Net anzuweisen um eine schreibgeschützte Eigenschaft beim Deserialisieren mit einem privaten Setter zu füllen. Durch Hinzufügen dieses Attributs zu einer schreibgeschützten Eigenschaft kann es während der Deserialisierung festgelegt werden.

Beispiel:

[JsonProperty]
public Guid? ClientId { get; private set; }
Nach dem Login kopieren

Alternative Lösung: Konstruktor mit Parameter

Ein anderer Ansatz zum Umgang mit privaten Settern besteht darin, einen Konstruktor bereitzustellen, der über einen Parameter verfügt, der der Eigenschaft entspricht, die Sie festlegen möchten. Dieser Konstruktor wird beim Deserialisieren des JSON-Objekts verwendet.

Beispiel:

public class Foo
{
    public string Bar { get; }

    public Foo(string bar)
    {
        Bar = bar;
    }
}
Nach dem Login kopieren

Auf diese Weise können Sie eine JSON-Zeichenfolge wie folgt deserialisieren:

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

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

Welche Welche Lösung zu verwenden ist, hängt von den spezifischen Anforderungen Ihrer Anwendung ab. Das [JsonProperty]-Attribut bietet eine einfache Möglichkeit, private Setter zu verarbeiten, erfordert jedoch eine Attributverzierung für die Eigenschaften. Der alternative Ansatz mit einem Konstruktor vermeidet die Dekoration von Attributen und funktioniert sowohl mit privaten als auch öffentlichen Settern.

Das obige ist der detaillierte Inhalt vonWie kann ich mit privaten Settern während der JSON-Deserialisierung mit Json.Net umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage