json.net verwendet den Standardkonstruktor, um den Standardkonstruktor zu verwenden, wenn sich das Ableitungsobjekt befindet. Wenn Sie jedoch eine Klasse mit einem Standardkonstruktor und einem nicht defekten Konstruktor haben, können Sie Probleme auf Probleme stoßen, wenn Sie versuchen, nicht -defaute Konstruktorfunktionen als Referenz zu verwenden.
Verwenden Sie [JsonConstructor] -Funktionen:
Um anzuzeigen, dass JSON.net einen nicht -defauten Konstruktor verwendet, können Sie die Funktion [JsonConstructor] hinzufügen. Diese Eigenschaft muss auf einen Konstruktor gestellt werden, um für die Deeperikularisierung verwendet zu werden.
Beispiel:
Stellen Sie sicher, dass der Name des Konstruktorparameters mit dem entsprechenden JSON -Attributnamen übereinstimmt (ignorieren Sie den unteren Fall).
JsonConveter:<code class="language-csharp">[JsonConstructor] public Result(int? code, string format, Dictionary<string, string> details = null) { // 构造函数逻辑 }</code>
Wenn Sie die Klasse nicht ändern oder die Eigenschaften nicht verwenden möchten, können Sie einen benutzerdefinierten JSONCONVERRER erstellen, um das Derivat manuell zu verarbeiten.
Beispiel:
Fügen Sie schließlich den Konverter den Einstellungen des Serialisierungsprogramms vor der DeepertDialisierung hinzu:
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Objekte mit Nicht-Default-Konstruktoren in JSON.net deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!