Ich muss json für folgende Klasse deserialisieren.
%Vor%Ich kann eine Instanz von Test wie
erstellen %Vor%in Anbetracht meiner json etwas wie
%Vor%Wie soll ich ein Objekt der Klasse Test erstellen, da mein Standardkonstruktor privat ist und ich ein Objekt erhalte, bei dem Eigenschaft NULL ist
Ich benutze Newtonsoft Json Parser.
Sie können Json.Net veranlassen, den privaten Konstruktor aufzurufen, indem Sie ihn mit einem [JsonConstructor]
-Attribut markieren:
Beachten Sie, dass der Serializer weiterhin die öffentlichen Setter verwendet, um das Objekt nach dem Aufrufen des Konstruktors aufzufüllen.
BEARBEITEN
Eine weitere mögliche Option ist die Einstellung ConstructorHandling
:
Es scheint nicht so, als müssten Sie irgendwelche zusätzlichen Schritte unternehmen.
Unter Verwendung von Json.NET v6.0.8 funktioniert das folgende C # -Programm in LINQPad:
%Vor% Sie müssen keine Serializer-Einstellung erstellen und ConstructorHandling hier zuweisen. Denken Sie daran, das Attribut [JsonConstructor]
für den privaten Konstruktor zu definieren.
Ich habe ähnlichen Fall mit abstrakten BaseNode.cs und seiner konkreten ComputerNode.cs Implementierung. Sie können die Klassen erstellen, den folgenden Code kopieren und einfügen und etwas experimentieren.
Für JSon lesen und schreiben hilft der folgende Code -
%Vor%Alles Gute!
Tags und Links c# json serialization json.net