public void ConvertObjectWithRenames() { string json = "{\"prop\":\"test\",\"booleanproperty\":true}"; RuntimeTypeData typeData = new RuntimeTypeData(); typeData.Type = typeof(DynamicTypedObjectConverterTestsObject); typeData.Properties.Add("property", new ParameterData() { JsonName = "prop", Name = "property", Type = new RuntimeTypeData() { Type = typeof(string) } }); DynamicTypedObjectConverter converter = new DynamicTypedObjectConverter(typeData); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(converter); DynamicTypedObjectConverterTestsObject result = JsonConvert.DeserializeObject <DynamicTypedObjectConverterTestsObject>(json, settings); Assert.NotNull(result); Assert.Equal("test", result.Property); Assert.True(result.BooleanProperty); string reserialized = JsonConvert.SerializeObject(result, settings); Assert.Equal(json, reserialized); }
public void ConvertNestedObject() { string json = "{ \"obj\": { \"prop\": \"test\", \"booleanproperty\": true }, \"unconvertedobject\": { \"prop\": \"5\" } }"; string expectedJson = "{\"obj\":{\"prop\":\"test\",\"booleanproperty\":true},\"unconvertedobject\":{\"Property\":null}}"; RuntimeTypeData childTypeData = new RuntimeTypeData(); childTypeData.Type = typeof(DynamicTypedObjectConverterTestsObject); childTypeData.Properties.Add("property", new ParameterData() { JsonName = "prop", Name = "property", Type = new RuntimeTypeData() { Type = typeof(string) } }); RuntimeTypeData parentTypeData = new RuntimeTypeData(); parentTypeData.Type = typeof(DynamicTypedObjectConverterTestsNestedObject); parentTypeData.Properties.Add("object", new ParameterData() { JsonName = "obj", Name = "object", Type = childTypeData }); DynamicTypedObjectConverter childConverter = new DynamicTypedObjectConverter(childTypeData); DynamicTypedObjectConverter parentConverter = new DynamicTypedObjectConverter(parentTypeData); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(childConverter); settings.Converters.Add(parentConverter); DynamicTypedObjectConverterTestsNestedObject result = JsonConvert.DeserializeObject <DynamicTypedObjectConverterTestsNestedObject>(json, settings); Assert.NotNull(result); Assert.NotNull(result.Object); Assert.Equal("test", result.Object.Property); Assert.True(result.Object.BooleanProperty); Assert.NotNull(result.UnconvertedObject); Assert.Null(result.UnconvertedObject.Property); string reserialized = JsonConvert.SerializeObject(result, settings); Assert.Equal(expectedJson, reserialized); }