Heim >Backend-Entwicklung >C++ >Wie kann ich JSON-Objekte mit Nicht-Default-Konstruktoren mit json.net deserialisieren?

Wie kann ich JSON-Objekte mit Nicht-Default-Konstruktoren mit json.net deserialisieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-29 16:41:10552Durchsuche

How Can I Deserialize JSON Objects with Non-Default Constructors Using Json.net?

json.net: Deserialisierungsobjekte mit Nicht-Default-Konstruktoren

json.net verwendet typischerweise den Standardkonstruktor zur Deserialisierung. Wenn Ihre Klasse jedoch über einen Nicht-Default-Konstruktor verfügt, der aus anderen Gründen erforderlich ist, können Sie JSON.NET weiterhin verwenden, um mit Ihrem bevorzugten Konstruktor zu Deserialize zu deserialisieren.

Verwenden Sie das Attribut [JsonConstructor]

Die einfachste Lösung besteht darin, Ihren gewünschten Konstruktor mit dem [JsonConstructor] -attribut zu markieren. Dies fordert JSON.NET an, diesen Konstruktor während der Deserialisierung zu verwenden. Stellen Sie sicher, dass die Namen der Konstruktorparameternamen den JSON-Eigenschaftsnamen (Fall-unempfindlich) übereinstimmen.

<code class="language-csharp">[JsonConstructor]
public Result(int? code, string format, Dictionary<string, string> details = null)
{
    // ...
}</code>

Erstellen eines benutzerdefinierten JsonConverter

Wenn Sie den Quellcode nicht direkt ändern können, können Sie eine benutzerdefinierte JsonConverter.

erstellen
<code class="language-csharp">class ResultConverter : JsonConverter
{
    // ... implementation details ...
}</code>

Fügen Sie dann den Konverter zu Ihren Serializer -Einstellungen hinzu:

<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new ResultConverter());

Result result = JsonConvert.DeserializeObject<Result>(jsonText, settings);</code>

Dieser Ansatz bietet mehr Kontrolle über den Deserialisierungsprozess, ohne die ursprüngliche Klassendefinition zu ändern. Das JsonConverter ermöglicht eine flexible Objekterstellung und Eigenschaftspopulation.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Objekte mit Nicht-Default-Konstruktoren mit json.net deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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