public void SerializeCTest() { A a1 = new A("A", 1.1f, new DateTime(2019, 12, 1), null); B b1 = new B("B", 3.65f, new DateTime(2019, 10, 1), null); C c1 = new C("C", 5.37f, new DateTime(2020, 1, 2), null); a1.ObjectB = b1; b1.ObjectC = c1; c1.ObjectA = a1; JSONSerialization <C> json = new JSONSerialization <C>("ObiektC.json", c1); json.serialize(); string result = File.ReadAllText("ObiektC.json"); Assert.AreEqual(@"{ ""$id"": ""1"", ""$type"": ""SerializationLibrary.C, SerializationLibrary"", ""Name"": ""C"", ""Number"": 5.37, ""Date"": ""2020-01-02T00:00:00"", ""ObjectA"": { ""$id"": ""2"", ""$type"": ""SerializationLibrary.A, SerializationLibrary"", ""Name"": ""A"", ""Number"": 1.1, ""Date"": ""2019-12-01T00:00:00"", ""ObjectB"": { ""$id"": ""3"", ""$type"": ""SerializationLibrary.B, SerializationLibrary"", ""Name"": ""B"", ""Number"": 3.65, ""Date"": ""2019-10-01T00:00:00"", ""ObjectC"": { ""$ref"": ""1"" } } } }", result); }
static void Main(string[] args) { ConsoleKeyInfo key; do { Console.WriteLine("1. Serialize to JSON\n" + "2. Deserialize from JSON\n" + "3. Serialize to CSV\n" + "4. Deserialize from CSV\n" + "0. Exit\n\n"); key = Console.ReadKey(); switch (key.KeyChar) { case '1': { Console.Clear(); A a1 = new A("A", 1.1f, new DateTime(2019, 12, 1), null); B b1 = new B("B", 3.65f, new DateTime(2019, 10, 1), null); C c1 = new C("C", 5.37f, new DateTime(2020, 1, 2), null); a1.ObjectB = b1; b1.ObjectC = c1; c1.ObjectA = a1; JSONSerialization <A> json = new JSONSerialization <A>("ObiektA.json", a1); json.serialize(); Console.WriteLine("Serialization successful\n" + "Press any key to continue"); Console.ReadKey(); Console.Clear(); break; } case '2': { Console.Clear(); A a2 = null; JSONSerialization <A> json = null; try { json = new JSONSerialization <A>("ObiektA.json", a2); a2 = json.deserialize(); } catch (FileNotFoundException e) { Console.WriteLine("Serialize the object first\n" + "Press any key to continue"); Console.ReadKey(); Console.Clear(); break; } Console.WriteLine(a2); Console.WriteLine("\nPress any key to continue"); Console.ReadKey(); Console.Clear(); break; } case '3': { Console.Clear(); A a1 = new A("A", 1.1f, new DateTime(2019, 12, 1), null); B b1 = new B("B", 3.65f, new DateTime(2019, 10, 1), null); C c1 = new C("C", 5.37f, new DateTime(2020, 1, 2), null); a1.ObjectB = b1; b1.ObjectC = c1; c1.ObjectA = a1; CSVSerialization <B> csv = new CSVSerialization <B>("ObiektB.csv", b1); csv.serialize(); Console.WriteLine("Serialization successful\n" + "Press any key to continue"); Console.ReadKey(); Console.Clear(); break; } case '4': { Console.Clear(); B b2 = null; CSVSerialization <B> csv = null; try { csv = new CSVSerialization <B>("ObiektB.csv", b2); b2 = csv.deserialize(); } catch (FileNotFoundException e) { Console.WriteLine("Serialize the object first\n" + "Press any key to continue"); Console.ReadKey(); Console.Clear(); break; } Console.WriteLine(b2); Console.WriteLine("\nPress any key to continue"); Console.ReadKey(); Console.Clear(); break; } case '0': { break; } default: { Console.Clear(); Console.WriteLine("No such option\n" + "Press any key to continue"); Console.ReadKey(); Console.Clear(); break; } } }while (key.KeyChar != '0'); }