Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }