/// <summary> /// Override method to serialize a WTTTimeTableCollection object to a JSON string /// </summary> /// <returns></returns> public override void WriteJson(JsonWriter Writer, object Value, JsonSerializer Serializer) { //Validate Arguments if (Serializer == null) { throw new ArgumentNullException(ExceptionHelper.GetStaticException("GeneralNullArgument", new string[] { "Serializer" }, new System.Globalization.CultureInfo("en-GB"))); } if (Writer == null) { throw new ArgumentNullException(ExceptionHelper.GetStaticException("GeneralNullArgument", new string[] { "Writer" }, new System.Globalization.CultureInfo("en-GB"))); } WTTTimeTableCollection TimeTableCollection = (WTTTimeTableCollection)Value; //Create the surrogate and serialize it instead of the collection itself if (TimeTableCollection != null) { WTTTimeTableCollectionSurrogate SurrogateTimeTableCollection = new WTTTimeTableCollectionSurrogate() { TimeTables = TimeTableCollection.ToList(), StartDate = TimeTableCollection.StartDate }; Serializer.Serialize(Writer, SurrogateTimeTableCollection); } }
/// <summary> /// Override method to deserialize a JSON string into a WTTTimeTableCollection /// </summary> /// <returns></returns> public override object ReadJson(JsonReader Reader, Type ObjectType, object ExistingValue, JsonSerializer Serializer) { //Validate Arguments if (Serializer == null) { throw new ArgumentNullException(ExceptionHelper.GetStaticException("GeneralNullArgument", new string[] { "Serializer" }, new System.Globalization.CultureInfo("en-GB"))); } if (Reader == null) { throw new ArgumentNullException(ExceptionHelper.GetStaticException("GeneralNullArgument", new string[] { "Reader" }, new System.Globalization.CultureInfo("en-GB"))); } //Deserialize reader into surrogate object WTTTimeTableCollectionSurrogate SurrogateTimeTableCollection = Serializer.Deserialize <WTTTimeTableCollectionSurrogate>(Reader); //Extract properties List <WTTTimeTable> TimeTables = SurrogateTimeTableCollection.TimeTables; //Instantiate new WTTTimeTableCollection WTTTimeTableCollection TimeTableCollection = new WTTTimeTableCollection(SurrogateTimeTableCollection.StartDate); //Populate the timetables and reseed WTTTripCollection Start Date foreach (WTTTimeTable TimeTable in TimeTables) { WTTTripCollection UpdatedTripCollection = new WTTTripCollection(TimeTable.StartDate); foreach (WTTTrip Trip in TimeTable.Trip) { UpdatedTripCollection.Add(Trip); } TimeTable.Trip = UpdatedTripCollection; TimeTableCollection.Add(TimeTable); } return(TimeTableCollection); }