public void DeserializePublicExtensionDataTypeNamdHandling() { string json = @"{ ""$id"": ""1"", ""Name"": ""Name!"", ""Test"": 1, ""Self"": { ""$type"": ""Newtonsoft.Json.Tests.TestObjects.WagePerson, Newtonsoft.Json.Tests"", ""HourlyWage"": 2.0, ""Name"": null, ""BirthDate"": ""0001-01-01T00:00:00"", ""LastModified"": ""0001-01-01T00:00:00"" } }"; PublicExtensionDataAttributeTestClass c2 = JsonConvert.DeserializeObject <PublicExtensionDataAttributeTestClass>(json, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects }); Assert.AreEqual("Name!", c2.Name); WagePerson bizzaroC2 = (WagePerson)c2.ExtensionData["Self"]; Assert.AreEqual(2m, bizzaroC2.HourlyWage); }
public void SerializePublicExtensionDataTypeNamdHandling() { PublicExtensionDataAttributeTestClass c = new PublicExtensionDataAttributeTestClass { Name = "Name!", ExtensionData = new Dictionary <object, object> { { "Test", new WagePerson { HourlyWage = 2.1m } } } }; string json = JsonConvert.SerializeObject(c, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, Formatting = Formatting.Indented }); StringAssert.AreEqual(@"{ ""$type"": ""Newtonsoft.Json.Tests.Serialization.ExtensionDataTests+PublicExtensionDataAttributeTestClass, Newtonsoft.Json.Tests"", ""Name"": ""Name!"", ""Test"": { ""$type"": ""Newtonsoft.Json.Tests.TestObjects.WagePerson, Newtonsoft.Json.Tests"", ""HourlyWage"": 2.1, ""Name"": null, ""BirthDate"": ""0001-01-01T00:00:00"", ""LastModified"": ""0001-01-01T00:00:00"" } }", json); }
public void SerializePublicExtensionDataCircularReference() { var c = new PublicExtensionDataAttributeTestClass { Name = "Name!", ExtensionData = new Dictionary <object, object> { { "Test", 1 } } }; c.ExtensionData["Self"] = c; string json = JsonConvert.SerializeObject( c, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All, Formatting = Formatting.Indented } ); StringAssert.AreEqual( @"{ ""$id"": ""1"", ""Name"": ""Name!"", ""Test"": 1, ""Self"": { ""$ref"": ""1"" } }", json ); var c2 = JsonConvert.DeserializeObject <PublicExtensionDataAttributeTestClass>( json, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All } ); Assert.AreEqual("Name!", c2.Name); PublicExtensionDataAttributeTestClass bizzaroC2 = (PublicExtensionDataAttributeTestClass)c2.ExtensionData["Self"]; Assert.AreEqual(c2, bizzaroC2); Assert.AreEqual(1, (long)bizzaroC2.ExtensionData["Test"]); }
public void SerializePublicExtensionDataTypeNamdHandling() { PublicExtensionDataAttributeTestClass c = new PublicExtensionDataAttributeTestClass { Name = "Name!", ExtensionData = new Dictionary<object, object> { { "Test", new WagePerson { HourlyWage = 2.1m } } } }; string json = JsonConvert.SerializeObject(c, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, Formatting = Formatting.Indented }); Assert.AreEqual(@"{ ""$type"": ""Newtonsoft.Json.Tests.Serialization.ExtensionDataTests+PublicExtensionDataAttributeTestClass, Newtonsoft.Json.Tests"", ""Name"": ""Name!"", ""Test"": { ""$type"": ""Newtonsoft.Json.Tests.TestObjects.WagePerson, Newtonsoft.Json.Tests"", ""HourlyWage"": 2.1, ""Name"": null, ""BirthDate"": ""0001-01-01T00:00:00"", ""LastModified"": ""0001-01-01T00:00:00"" } }", json); }
public void SerializePublicExtensionDataCircularReference() { var c = new PublicExtensionDataAttributeTestClass { Name = "Name!", ExtensionData = new Dictionary<object, object> { { "Test", 1 } } }; c.ExtensionData["Self"] = c; string json = JsonConvert.SerializeObject(c, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All, Formatting = Formatting.Indented }); Assert.AreEqual(@"{ ""$id"": ""1"", ""Name"": ""Name!"", ""Test"": 1, ""Self"": { ""$ref"": ""1"" } }", json); var c2 = JsonConvert.DeserializeObject<PublicExtensionDataAttributeTestClass>(json, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All }); Assert.AreEqual("Name!", c2.Name); PublicExtensionDataAttributeTestClass bizzaroC2 = (PublicExtensionDataAttributeTestClass)c2.ExtensionData["Self"]; Assert.AreEqual(c2, bizzaroC2); Assert.AreEqual(1, (long)bizzaroC2.ExtensionData["Test"]); }