Exemple #1
0
        public DefaultJsonMapping()
        {
            json2Object = new Json2Object();
            //json2Object.setToUseFields();
            object2Json = new Object2Json();
            object2Json.NodeExpander = new FieldReflectionNodeExpander();
            object2Json.IndentSize   = 2;

            //todo json 2 object should understand TypeAliaser
            object2Json.TypeAliaser       = (t) => { return(t.FullName); };
            object2Json.TypeAliasProperty = json2Object.TypeSpecifier;
        }
        public DefaultJsonMapping()
        {
            json2Object = new Json2Object();
            //json2Object.setToUseFields();
            object2Json = new Object2Json();
            object2Json.NodeExpander = new FieldReflectionNodeExpander();
            object2Json.IndentSize = 2;

            //todo json 2 object should understand TypeAliaser
            object2Json.TypeAliaser = (t) => { return t.FullName; };
            object2Json.TypeAliasProperty = json2Object.TypeSpecifier;
        }
        static bool convertType(ref object value, Type type, object inValue)
        {
            bool bIsListType = isListType(type);

            if (bIsListType && type.IsArray)
            {
                IListNonGeneric iInValue = (IListNonGeneric)inValue;
                Array           arr      = Array.CreateInstance(type.GetElementType(), iInValue.Count);
                for (int done = 0; done < iInValue.Count; done++)
                {
                    arr.SetValue(iInValue[done], done);
                }
                value = arr;
                return(true);
            }
            if (bIsListType)
            {
                value = Json2Object.newInstance(type);

                object[] arrInValue = (object[])inValue;

                MethodInfo mi = type.GetMethod("Add");

                for (int done = 0; done < arrInValue.Length; done++)
                {
                    object        indexValue = arrInValue[done];
                    ParameterInfo pi         = mi.GetParameters()[0];

                    if (indexValue != null && !pi.ParameterType.IsAssignableFrom(indexValue.GetType()))
                    {
                        indexValue = Convert.ChangeType(indexValue, pi.ParameterType);
                    }
                    mi.Invoke(value, new Object[] { indexValue });
                }
                return(true);
            }
            return(false);
        }