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; }
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; } }
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
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!