ich einen Web-Service, die JSON in FormDeserialising json Zeichenfolge zur Liste <T>
{"AppointmentList":[{"AppointmentList":{"id":"1","MeetingId":"1","MeetingName":"Test Meeting 1","Length":"90","Room":"B2C","DateTimeFrom":"1st Sept 2016","Venue":"The old pub","DateCreated":"2016-08-30 00:00:00","DateDue":"2016-09-01 00:00:00","UserId":"JohnsonPa"}},{"AppointmentList":{"id":"2","MeetingId":"2","MeetingName":"Test Meeting 2","Length":"60","Room":"B2C","DateTimeFrom":"11th Sept 2016","Venue":"The old pub","DateCreated":"2016-09-01 00:00:00","DateDue":"2016-09-12 00:00:00","UserId":"JohnsonPa"}...}]}
ich ausgibt bin versucht, diese in deserialise zur Liste. Normalerweise hätte ich eine Basisklasse, die eine Eigenschaft List AppointmentList {get; set;}, das würde jedoch bedeuten, dass ich den Typ T nicht verwenden kann und für jede Klasse einen Stapel doppelten Codes benötige.
Ich kann sicherlich BaseClass mit einer Eigenschaft public List Data {get; set;}, da JSON nicht zu Data dekodiert (falscher Name) und JSON PropertyName nicht auf den von typeof (T) .ToString() abgeleiteten Klassennamen gesetzt werden kann.
Gibt es eine Möglichkeit zu erreichen, was ich ohne viel Code-Duplikation tun möchte?
Ich habe versucht, den Deserialiser zu JArray zu werfen und einen Reader daraus zu erstellen, aber dies löst eine Ausnahme aus.
Nicht sicher, warum Sie mit einer konkreten Klasse für dieses Objekt verhindern Generika verwenden? Und wirklich, es wäre am besten, ein View-Modell zu erstellen, das dem Objekt für das Deserialzing entspricht. – Darren
Warum sollte ich ein View-Modell dafür haben - es sind reine Daten, so dass es innerhalb eines Modells gehandhabt werden kann. – Nodoid
Nur Terminologie - nennen Sie es ein DTO, wenn Sie bevorzugen. Punkt zu sein, um es zu deserialisieren, ist es vielleicht besser zu sagen, welchen Mechanismus Sie verwenden, welcher Typ zu deserialisieren ist. Vor allem, wenn Sie dieses Objekt herumreichen. Noch immer nicht beantwortet, warum dies Auswirkungen auf die Verwendung von Generika – Darren