public void JTokenWriter_OverrideSpecifiedName() { JsonIgnoreAttributeOnClassTestClass ignoreAttributeOnClassTestClass = new JsonIgnoreAttributeOnClassTestClass(); ignoreAttributeOnClassTestClass.Field = int.MinValue; DefaultContractResolver contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy { OverrideSpecifiedNames = true } }; JsonSerializer serializer = new JsonSerializer(); serializer.ContractResolver = contractResolver; JTokenWriter writer = new JTokenWriter(); serializer.Serialize(writer, ignoreAttributeOnClassTestClass); JObject o = (JObject)writer.Token; JProperty p = o.Property("theField"); Assert.IsNotNull(p); Assert.AreEqual(int.MinValue, (int)p.Value); }
public void CreateObjectWithParameters() { int count = 0; ContainerBuilder builder = new ContainerBuilder(); builder.RegisterType <TaskRepository>().As <ITaskRepository>(); builder.RegisterType <TaskController>(); builder.Register(c => { count++; return(new LogManager(new DateTime(2000, 12, 12))); }).As <ILogger>(); IContainer container = builder.Build(); AutofacContractResolver contractResolver = new AutofacContractResolver(container); TaskController controller = JsonConvertX.DeserializeObject <TaskController>(@"{ 'Logger': { 'Level':'Debug' } }", new JsonSerializerSettings { ContractResolver = contractResolver }); Assert.IsNotNull(controller); Assert.IsNotNull(controller.Logger); Assert.AreEqual(1, count); Assert.AreEqual(new DateTime(2000, 12, 12), controller.Logger.DateTime); Assert.AreEqual("Debug", controller.Logger.Level); }
public void PublicParameterizedConstructorWithPropertyNameConflictWithAttribute() { string json = @"{name:""1""}"; PublicParameterizedConstructorWithPropertyNameConflictWithAttribute c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorWithPropertyNameConflictWithAttribute>(json); Assert.IsNotNull(c); Assert.AreEqual(1, c.Name); }
public void SuccessWithPublicParameterizedConstructorWhenParameterNameConflictsWithPropertyName() { string json = @"{name:""1""}"; PublicParameterizedConstructorWithPropertyNameConflict c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorWithPropertyNameConflict>(json); Assert.IsNotNull(c); Assert.AreEqual(1, c.Name); }
public void SuccessWithPublicParameterizedConstructorWhenParameterRequiresAConverterWithPropertyAttribute() { string json = @"{name:""Name!""}"; PublicParameterizedConstructorRequiringConverterWithPropertyAttributeTestClass c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorRequiringConverterWithPropertyAttributeTestClass>(json); Assert.IsNotNull(c); Assert.AreEqual("Name!", c.Name.Value); }
public void SuccessWithPublicParameterizedConstructorWhenParameterRequiresAConverter() { string json = @"{nameParameter:""Name!""}"; PublicParameterizedConstructorRequiringConverterTestClass c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorRequiringConverterTestClass>(json, new NameContainerConverter()); Assert.IsNotNull(c); Assert.AreEqual("Name!", c.Name.Value); }
public void SuccessWithPublicParameterizedConstructorWhenParameterIsNotAProperty() { string json = @"{nameParameter:""Name!""}"; PublicParameterizedConstructorWithNonPropertyParameterTestClass c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorWithNonPropertyParameterTestClass>(json); Assert.IsNotNull(c); Assert.AreEqual("Name!", c.Name); }
public void SuccessWithPublicParameterizedConstructor() { string json = @"{Name:""Name!""}"; var c = JsonConvertX.DeserializeObject<PublicParameterizedConstructorTestClass>(json); Assert.IsNotNull(c); Assert.AreEqual("Name!", c.Name); }
public void SuccessWithPrivateConstructorAndAllowNonPublic() { string json = @"{Name:""Name!""}"; PrivateConstructorTestClass c = JsonConvertX.DeserializeObject<PrivateConstructorTestClass>(json, new JsonSerializerSettings { ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor }); Assert.IsNotNull(c); Assert.AreEqual("Name!", c.Name); }
public void ErrorHandlingMetadata() { List <Exception> errors = new List <Exception>(); AAA a2 = JsonConvertX.DeserializeObject <AAA>(@"{""MyTest"":{""$type"":""<Namespace>.JsonTest+MyTest2, <Assembly>""}}", new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto, Error = (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs e) => { errors.Add(e.ErrorContext.Error); e.ErrorContext.Handled = true; } }); Assert.IsNotNull(a2); Assert.AreEqual(1, errors.Count); Assert.AreEqual("Error resolving type specified in JSON '<Namespace>.JsonTest+MyTest2, <Assembly>'. Path 'MyTest.$type', line 1, position 61.", errors[0].Message); }
public void DeserializeTypeWithDubiousGetHashcode() { User user1 = new User("Peter", typeof(Version)); User user2 = new User("Michael", typeof(Version)); user1.Friend = user2; JsonSerializerSettings serializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, PreserveReferencesHandling = PreserveReferencesHandling.Objects }; string json = JsonConvertX.SerializeObject(user1, Formatting.Indented, serializerSettings); User deserializedUser = JsonConvertX.DeserializeObject <User>(json, serializerSettings); Assert.IsNotNull(deserializedUser); }
public void JTokenWriter() { JsonIgnoreAttributeOnClassTestClass ignoreAttributeOnClassTestClass = new JsonIgnoreAttributeOnClassTestClass(); ignoreAttributeOnClassTestClass.Field = int.MinValue; JsonSerializer serializer = new JsonSerializer(); serializer.ContractResolver = new CamelCasePropertyNamesContractResolver(); JTokenWriter writer = new JTokenWriter(); serializer.Serialize(writer, ignoreAttributeOnClassTestClass); JObject o = (JObject)writer.Token; JProperty p = o.Property("theField"); Assert.IsNotNull(p); Assert.AreEqual(int.MinValue, (int)p.Value); string json = o.ToString(); }
public void ExtensionDataDeserializeWithNonDefaultConstructorTest() { ExtensionDataDeserializeWithNonDefaultConstructor c = new ExtensionDataDeserializeWithNonDefaultConstructor("Name!"); c._extensionData = new Dictionary <string, JToken> { { "Key!", "Value!" } }; string json = JsonConvertX.SerializeObject(c, Formatting.Indented); StringAssert.AreEqual(@"{ ""Name"": ""Name!"", ""Key!"": ""Value!"" }", json); var c2 = JsonConvertX.DeserializeObject <ExtensionDataDeserializeWithNonDefaultConstructor>(json); Assert.AreEqual("Name!", c2.Name); Assert.IsNotNull(c2._extensionData); Assert.AreEqual(1, c2._extensionData.Count); Assert.AreEqual("Value!", (string)c2._extensionData["Key!"]); }
public void CreateObjectWithSettableParameter() { int count = 0; ContainerBuilder builder = new ContainerBuilder(); builder.Register(c => { count++; return(new TaskRepository()); }).As <ITaskRepository>(); builder.RegisterType <HasSettableProperty>(); builder.Register(c => { count++; return(new LogManager(new DateTime(2000, 12, 12))); }).As <ILogger>(); IContainer container = builder.Build(); AutofacContractResolver contractResolver = new AutofacContractResolver(container); HasSettableProperty o = JsonConvertX.DeserializeObject <HasSettableProperty>(@"{ 'Logger': { 'Level': 'Debug' }, 'Repository': { 'ConnectionString': 'server=.', 'CreatedOn': '2015-04-01 20:00' }, 'People': [ { 'Name': 'Name1!' }, { 'Name': 'Name2!' } ], 'Person': { 'Name': 'Name3!' } }", new JsonSerializerSettings { ContractResolver = contractResolver }); Assert.IsNotNull(o); Assert.IsNotNull(o.Logger); Assert.IsNotNull(o.Repository); Assert.AreEqual(o.Repository.CreatedOn, DateTime.Parse("2015-04-01 20:00")); Assert.AreEqual(2, count); Assert.AreEqual(new DateTime(2000, 12, 12), o.Logger.DateTime); Assert.AreEqual("Debug", o.Logger.Level); Assert.AreEqual("server=.", o.Repository.ConnectionString); Assert.AreEqual(2, o.People.Count); Assert.AreEqual("Name1!", o.People[0].Name); Assert.AreEqual("Name2!", o.People[1].Name); Assert.AreEqual("Name3!", o.Person.Name); }
public void VirtualShouldSerialize() { var setFoo = new Foo2() { name = Guid.NewGuid().ToString(), myBar = new Bar2() { name = Guid.NewGuid().ToString(), myBaz = new Baz1[] { new Baz1() { name = Guid.NewGuid().ToString(), myFrob = new Frob1[] { new Frob1 { name = Guid.NewGuid().ToString() } } }, new Baz1() { name = Guid.NewGuid().ToString(), myFrob = new Frob1[] { new Frob1 { name = Guid.NewGuid().ToString() } } }, new Baz1() { name = Guid.NewGuid().ToString(), myFrob = new Frob1[] { new Frob1 { name = Guid.NewGuid().ToString() } } }, } } }; var setFooJson = Serialize(setFoo); var deserializedSetFoo = JsonConvertX.DeserializeObject <Foo2>(setFooJson); Assert.AreEqual(setFoo.name, deserializedSetFoo.name); Assert.IsNotNull(deserializedSetFoo.myBar); Assert.AreEqual(setFoo.myBar.name, deserializedSetFoo.myBar.name); Assert.IsNotNull(deserializedSetFoo.myBar.myBaz); Assert.AreEqual(setFoo.myBar.myBaz.Length, deserializedSetFoo.myBar.myBaz.Length); Assert.AreEqual(setFoo.myBar.myBaz[0].name, deserializedSetFoo.myBar.myBaz[0].name); Assert.IsNotNull(deserializedSetFoo.myBar.myBaz[0].myFrob[0]); Assert.AreEqual(setFoo.myBar.myBaz[0].myFrob[0].name, deserializedSetFoo.myBar.myBaz[0].myFrob[0].name); Assert.AreEqual(setFoo.myBar.myBaz[1].name, deserializedSetFoo.myBar.myBaz[1].name); Assert.IsNotNull(deserializedSetFoo.myBar.myBaz[2].myFrob[0]); Assert.AreEqual(setFoo.myBar.myBaz[1].myFrob[0].name, deserializedSetFoo.myBar.myBaz[1].myFrob[0].name); Assert.AreEqual(setFoo.myBar.myBaz[2].name, deserializedSetFoo.myBar.myBaz[2].name); Assert.IsNotNull(deserializedSetFoo.myBar.myBaz[2].myFrob[0]); Assert.AreEqual(setFoo.myBar.myBaz[2].myFrob[0].name, deserializedSetFoo.myBar.myBaz[2].myFrob[0].name); Assert.AreEqual(true, setFoo.myBar.ShouldSerializemyBazCalled); }
public void DeserializeEntity() { string json = @"{ ""$id"": ""1"", ""FolderId"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"", ""Name"": ""Root folder"", ""Description"": ""Description!"", ""CreatedDate"": ""2000-12-10T10:50:00Z"", ""Files"": [], ""ChildFolders"": [ { ""$id"": ""2"", ""FolderId"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"", ""Name"": ""Child folder"", ""Description"": ""Description!"", ""CreatedDate"": ""2001-11-20T10:50:00Z"", ""Files"": [ { ""$id"": ""3"", ""FileId"": ""cc76d734-49f1-4616-bb38-41514228ac6c"", ""Name"": ""File 1"", ""Description"": ""Description!"", ""CreatedDate"": ""2002-10-30T10:50:00Z"", ""Folder"": { ""$ref"": ""2"" }, ""EntityKey"": { ""$id"": ""4"", ""EntitySetName"": ""File"", ""EntityContainerName"": ""DataServicesTestDatabaseEntities"", ""EntityKeyValues"": [ { ""Key"": ""FileId"", ""Type"": ""System.Guid"", ""Value"": ""cc76d734-49f1-4616-bb38-41514228ac6c"" } ] } } ], ""ChildFolders"": [], ""ParentFolder"": { ""$ref"": ""1"" }, ""EntityKey"": { ""$id"": ""5"", ""EntitySetName"": ""Folder"", ""EntityContainerName"": ""DataServicesTestDatabaseEntities"", ""EntityKeyValues"": [ { ""Key"": ""FolderId"", ""Type"": ""System.Guid"", ""Value"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"" } ] } } ], ""ParentFolder"": null, ""EntityKey"": { ""$id"": ""6"", ""EntitySetName"": ""Folder"", ""EntityContainerName"": ""DataServicesTestDatabaseEntities"", ""EntityKeyValues"": [ { ""Key"": ""FolderId"", ""Type"": ""System.Guid"", ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"" } ] } }"; Folder f = JsonConvertX.DeserializeObject <Folder>(json, new IsoDateTimeConverter()); Assert.IsNotNull(f); Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.FolderId); Assert.AreEqual("Folder", f.EntityKey.EntitySetName); Assert.AreEqual("DataServicesTestDatabaseEntities", f.EntityKey.EntityContainerName); Assert.AreEqual("Folder", f.EntityKey.EntitySetName); Assert.AreEqual(false, f.EntityKey.IsTemporary); Assert.AreEqual(1, f.EntityKey.EntityKeyValues.Length); Assert.AreEqual("FolderId", f.EntityKey.EntityKeyValues[0].Key); Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.EntityKey.EntityKeyValues[0].Value); Assert.AreEqual("Root folder", f.Name); Assert.AreEqual(new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc), f.CreatedDate); Assert.AreEqual(null, f.ParentFolder); Assert.AreEqual(1, f.ChildFolders.Count); Folder childFolder = f.ChildFolders.ElementAt(0); Assert.AreEqual("Child folder", childFolder.Name); Assert.AreEqual("Description!", childFolder.Description); Assert.AreEqual(f, childFolder.ParentFolder); Assert.AreEqual(f, childFolder.ParentFolderReference.Value); // is this a problem? Assert.AreEqual(null, childFolder.ParentFolderReference.EntityKey); }