Konstruktorenverbrauch in json.net Deserialisierung
VerwaltenVerwalten Die json.net -Bibliothek von
.NET verwendet typischerweise den Standardkonstruktor, wenn JSON -Daten in Objekte deserialisieren. Wenn eine Klasse jedoch sowohl einen Standard als auch einen überlasteten Konstruktor hat, kann JSON.NET standardmäßig zum parameterlosen Konstruktor sind, auch wenn Sie eine andere Verwendung verwenden. [JsonConstructor]
<code class="language-csharp">[JsonConstructor] public Result(int? code, string format, Dictionary<string, string> details = null) { // ... constructor logic ... }</code>
[JsonProperty]
zu bevölkern. JsonConverter
. Dies gibt Ihnen die vollständige Kontrolle über Objekt -Instanziierung und Bevölkerung.
<code class="language-csharp">class ResultConverter : JsonConverter { public override bool CanConvert(Type objectType) { return (objectType == typeof(Result)); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // ... custom deserialization logic ... } public override bool CanWrite => false; public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { throw new NotImplementedException(); } }</code>
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new ResultConverter()); Result result = JsonConvert.DeserializeObject<Result>(jsontext, settings);</code>
Diese Methoden gewährleisten eine präzise Kontrolle über die Konstruktorauswahl während der Deserialisierung von JSON.NET, selbst wenn ein Standardkonstruktor vorhanden ist und die korrekte Objektinitialisierung garantiert.
Das obige ist der detaillierte Inhalt vonWie kann ich steuern, welchen Konstruktor json.net während der Deserialisierung verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!