JSON wird zu einem Objekt mit einem privaten Setter deserialisiert

8

Ich habe ein Problem mit JSON und Deserialisierung. Ich habe einen Live-Produktionscode, der ein Nachrichtenobjekt verwendet, um Informationen von einem System zu einem anderen zu übertragen. Die ID der Nachricht ist sehr wichtig, da sie verwendet wird, um sie zu identifizieren. Wir wollen auch niemanden, der die IDs setzt und als solche einen privaten Setter macht.

Mein Problem tritt auf, wenn das JSON-Objekt deserialisiert werden soll und die ID nicht gesetzt ist. (offensichtlich, weil es privat ist)

Hat jemand einen guten Vorschlag als den besten Weg, um fortzufahren? Ich habe versucht, Iserialisation zu verwenden, und es wird ignoriert. Ich habe versucht, DataContract zu verwenden, aber das scheitert an dem externen System, von dem wir die Daten erhalten.

Meine einzige Option im Moment ist, dass die Felder ID und TimeCreated öffentliche Setter haben.

Ich habe ein Objekt als solches

%Vor%

Jetzt verwende ich den folgenden Code:

%Vor%

Die Felder ID und Zeit, die erstellt wurden, stimmen nicht überein, da sie privat sind. Ich habe auch versucht, intern und geschützt, aber auch keine Freude hier.

Das vollständige Objekt hat einen Konstruktor, der eine ID und eine Date-Zeit akzeptiert, um diese beim Laden aus der DB zu setzen.

Jede Hilfe wird sehr geschätzt.

Danke

    
Andrew Newland 11.05.2011, 07:59
quelle

2 Antworten

5

Sie können DataContractJsonSerializer anstelle von JavaScriptSerializer verwenden. Sie müssen Ihre Klasse mit einigen Datenvertragsattributen dekorieren.

%Vor%

Generische Serialisierungshilfsmethoden

%Vor%

In Ihrem Fall können Sie das Deserialisieren mit:

durchführen %Vor%     
Lee Gunn 11.05.2011, 08:30
quelle
3

Ich denke, eine neue Ebene der Abstraktion zwischen Ihrem json und Ihrem Dto ist Ihre beste Wette.

%Vor%     
Dve 11.05.2011 08:04
quelle

Tags und Links