protected JsonObject ToJsonObject(object obj, JsonMappingContainer mappings = null)
        {
            var result = new JsonObject();

            var properties = this.assemblyInfoService.GetProperties(obj);

            var objType = obj.GetType();

            bool hasMappings = mappings != null;

            bool allLower = hasMappings && mappings.LowerStrategyForAllTypes;

            JsonTypeMapping mapping = null;

            if (mappings != null && mappings.Has(objType))
            {
                mapping = mappings.Get(objType);
            }

            foreach (var property in properties)
            {
                var jsonPropertyName = hasMappings ? this.GetJsonPropertyName(property.Name, allLower, mapping) : property.Name;
                var propertyValue    = property.GetValue(obj);
                var propertyType     = property.PropertyType;

                var jsonValue = this.ToJsonValue(propertyType, propertyValue, mappings);
                result.Add(jsonPropertyName, jsonValue);
            }

            return(result);
        }
        public void TestMapping()
        {
            var mapping = new JsonMappingContainer();

            // obj => to json ... lower strategy
            mapping.SetType <User>()
            .SetProperty("Id", "id")
            .SetProperty("UserName", "username")
            .SetProperty("Age", "age")
            .SetProperty("Email", "email");

            // json => property obj ... can not resolve
            // or if property name to lower == json name

            Assert.AreEqual(1, mapping.Count);
            Assert.IsTrue(mapping.Has <User>());

            var result = mapping.Get <User>();

            Assert.AreEqual(false, result.LowerCaseStrategy);
            Assert.AreEqual("Id", result.Properties["Id"].PropertyName);
            Assert.AreEqual("id", result.Properties["Id"].JsonName);
            Assert.AreEqual("UserName", result.Properties["UserName"].PropertyName);
            Assert.AreEqual("username", result.Properties["UserName"].JsonName);
            Assert.AreEqual("Age", result.Properties["Age"].PropertyName);
            Assert.AreEqual("age", result.Properties["Age"].JsonName);
            Assert.AreEqual("Email", result.Properties["Email"].PropertyName);
            Assert.AreEqual("email", result.Properties["Email"].JsonName);
        }
Exemple #3
0
        protected object ToObject(Type objType, JsonObject jsonObject, JsonMappingContainer mappings = null)
        {
            var instance   = this.assemblyInfoService.CreateInstance(objType);
            var properties = this.assemblyInfoService.GetProperties(instance);

            bool hasMappings = mappings != null;

            bool allLower = hasMappings && mappings.LowerStrategyForAllTypes;

            JsonTypeMapping mapping = null;

            if (hasMappings && mappings.Has(objType))
            {
                mapping = mappings.Get(objType);
            }

            foreach (var jsonValue in jsonObject.Values)
            {
                var property = hasMappings ? this.FindProperty(properties, jsonValue.Key, allLower, mapping)
                     : this.FindProperty(properties, jsonValue.Key);
                if (property != null)
                {
                    var value = this.Resolve(property.PropertyType, jsonValue.Value, mappings);
                    this.assemblyInfoService.SetValue(instance, property, value);
                }
            }

            return(instance);
        }
        public void TestMapping_WithLower()
        {
            var mapping = new JsonMappingContainer();

            mapping.SetType <User>().SetToLowerCaseStrategy();

            Assert.AreEqual(1, mapping.Count);
            Assert.IsTrue(mapping.Has <User>());

            var result = mapping.Get <User>();

            Assert.AreEqual(true, result.LowerCaseStrategy);
        }