Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.16 KB | None | 0 0
  1. namespace PEProject_VirtualLibrary.Files
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.IO;
  6.  
  7.     using Newtonsoft.Json;
  8.     using Newtonsoft.Json.Linq;
  9.  
  10.     using PEProject_VirtualLibrary.Constrants;
  11.     using PEProject_VirtualLibrary.Entities;
  12.  
  13.     public class FileClass
  14.     {
  15.         public static void Serialize(List<Item> items)
  16.         {
  17.             if (!File.Exists(Constants.LogJsonPath))
  18.             {
  19.                 File.Create(Constants.LogJsonPath).Dispose();
  20.  
  21.                 using (StreamWriter file = new StreamWriter(Constants.LogJsonPath))
  22.                 {
  23.                     JsonSerializer serializer = new JsonSerializer();
  24.                     //serialize object directly into file stream
  25.                     serializer.Serialize(file, items);
  26.                 }
  27.             }
  28.             else if (File.Exists(Constants.LogJsonPath))
  29.             {
  30.                 using (StreamWriter file = new StreamWriter(Constants.LogJsonPath))
  31.                 {
  32.                     JsonSerializer serializer = new JsonSerializer();
  33.                     //serialize object directly into file stream
  34.                     serializer.Serialize(file, items);
  35.                 }
  36.             }
  37.         }
  38.  
  39.         public class ItemConverter : JsonConverter
  40.         {
  41.             public override bool CanConvert(Type objectType)
  42.             {
  43.                 return (objectType == typeof(Item));
  44.             }
  45.  
  46.             public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  47.             {
  48.                 JObject jo = JObject.Load(reader);
  49.                 if (jo["Type"].Value<string>() == "Book")
  50.                     return jo.ToObject<Book>(serializer);
  51.                 if (jo["Type"].Value<string>() == "AudioCD")
  52.                     return jo.ToObject<AudioCD>(serializer);
  53.                 if (jo["Type"].Value<string>() == "CDRom")
  54.                     return jo.ToObject<CDRom>(serializer);
  55.                 if (jo["Type"].Value<string>() == "Diskette")
  56.                     return jo.ToObject<Diskette>(serializer);
  57.                 if (jo["Type"].Value<string>() == "Magazine")
  58.                     return jo.ToObject<Magazine>(serializer);
  59.                 if (jo["Type"].Value<string>() == "VideoDiskette")
  60.                     return jo.ToObject<VideoDiskette>(serializer);
  61.  
  62.                 return null;
  63.             }
  64.  
  65.             public override bool CanWrite
  66.             {
  67.                 get { return false; }
  68.             }
  69.  
  70.             public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  71.             {
  72.                 throw new NotImplementedException();
  73.             }
  74.         }
  75.  
  76.         public static List<Item> Deserialize()
  77.         {
  78.             JsonConverter[] converters = { new ItemConverter() };
  79.             var json = File.ReadAllText(Constants.LogJsonPath);
  80.             var test = JsonConvert.DeserializeObject<List<Item>>(json, new JsonSerializerSettings() { Converters = converters });
  81.  
  82.             return test;
  83.             // return JsonConvert.DeserializeObject<List<Item>>(aa);
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement