/*! * \file DataSerializerJson.cs * \author Léana Besson */using Model; using System.Runtime.Serialization.Json; /*! * \namespace Persistance */ namespace Persistance { /*! * \class DataSerializerJson * \brief Contains all the information and functions needed to serialize information in Json format */ public class DataSerializerJson { /*! * \fn Serializer(string path, Theque theque) * \brief Serializes theque information in the file theque.json * \param path string - Path of the file in which the file is to be saved * \param theque Theque - Theque to be serialized */ public static void Serializer(string path, Theque theque) { Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); string jsonFile = "theque.json"; DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Theque)); using (FileStream stream = File.Create(jsonFile)) { using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, System.Text.Encoding.UTF8, false, true)) { jsonSerializer.WriteObject(writer, theque); } } } /*! * \fn Deserializer(string path) * \brief Deserializes the information contained in theque.json file if it exists, otherwise it retrieves the information from the stub * \param path string - Path of the file in which the file is to be saved * \return Theque - Theque with recovered data */ public static Theque Deserializer(string path) { Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); string jsonFile = "theque.json"; DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Theque)); Theque? theque = new Theque(); if (File.Exists(jsonFile)) { using (Stream stream = File.OpenRead(jsonFile)) { Theque? thequeOpt = jsonSerializer.ReadObject(stream) as Theque; if (thequeOpt != null) theque = thequeOpt; else Console.WriteLine("Theque est null"); } } else { theque = Stub.LoadTheque(); } return theque; } } }