Beispiel #1
0
        /// <summary>
        /// 创建一个空
        /// </summary>
        /// <returns></returns>
        public static DynamicObj NewObj(string Key, object Value)
        {
            DynamicObj obj = new DynamicObj();

            obj.Set(Key, Value);
            return(obj);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public DynamicObj DeserializeDynamicObj(string input)
        {
            DynamicObj obj = JsonConvert.DeserializeObject <DynamicObj>(input);

            if (obj == null)
            {
                return(new DynamicObj());
            }

            string[] keys = new string[obj.Count];
            obj.Keys.CopyTo(keys, 0);  // .ToList<string>();
            foreach (string key in keys)
            {
                object co = obj[key];
                if (co != null)
                {
                    if (co is JObject)
                    {
                        obj[key] = ToDynamic((JObject)co);
                    }
                    else if (co is JArray)
                    {
                        obj[key] = ToDynamics((JArray)co);
                    }
                }
            }
            return(obj);
        }
Beispiel #3
0
        /// <summary>
        ///  将 JSON 格式字符串转换为指定类型的对象。
        /// </summary>
        /// <typeparam name="T">所生成对象的类型。</typeparam>
        /// <param name="input">要反序列化的 JSON 字符串。</param>
        /// <returns>反序列化的对象。</returns>
        public T Deserialize <T>(string input)
        {
            T v = JsonConvert.DeserializeObject <T>(input, new JsonSerializerSettings()
            {
                MissingMemberHandling = MissingMemberHandling.Error
            });

            if (v == null)
            {
                return(default(T));
            }

            if (v is DynamicObj)
            {
                DynamicObj obj  = v as DynamicObj;
                string[]   keys = new string[obj.Count];
                obj.Keys.CopyTo(keys, 0);  // .ToList<string>();
                foreach (string key in keys)
                {
                    object co = obj[key];
                    if (co != null)
                    {
                        if (co is JObject)
                        {
                            obj[key] = ToDynamic((JObject)co);
                        }
                        else if (co is JArray)
                        {
                            obj[key] = ToDynamics((JArray)co);
                        }
                    }
                }
            }
            return(v);
        }
Beispiel #4
0
        public static DynamicObj ToDynamic(IDataReader dr)
        {
            DynamicObj obj = new DynamicObj(StringComparer.OrdinalIgnoreCase);

            for (int index = 0; index < dr.FieldCount; index++)
            {
                object v = dr.GetValue(index);
                if (v == DBNull.Value)
                {
                    v = v.GetObjectValue(dr.GetFieldType(index));
                }
                obj.Set(dr.GetName(index), v);
            }
            return(obj);
        }
Beispiel #5
0
        public static DynamicObj ToDynamicObj(this object item, Type itemType, List <string> PropertyNames = null)
        {
            if (item == null)
            {
                return(null);
            }
            if (PropertyNames == null)
            {
                PropertyNames = GetAllPropertyName(item, itemType);
            }
            DynamicObj data = new DynamicObj();

            foreach (string name in PropertyNames)
            {
                object v = GetPropertyValue(item, name, itemType);
                data[name] = v.IsNull() ? DBNull.Value : v;
            }
            return(data);
        }
Beispiel #6
0
        private DynamicObj ToDynamic(JObject jo)
        {
            if (jo == null)
            {
                return(null);
            }

            DynamicObj obj = new DynamicObj();
            IEnumerable <JProperty> properties = jo.Properties();

            foreach (JProperty item in properties)
            {
                if (item.Value == null)
                {
                    obj.Set(item.Name, null);
                }
                else if (item.Value is JObject)
                {
                    obj.Set(item.Name, ToDynamic((JObject)item.Value));
                }
                else if (item.Value is JArray)
                {
                    obj.Set(item.Name, ToDynamics((JArray)item.Value));
                }
                else
                {
                    object ov = ((JValue)item.Value).Value;
                    if (ov is JObject)
                    {
                        obj.Set(item.Name, ToDynamic((JObject)ov));
                    }
                    else
                    {
                        obj.Set(item.Name, ov);
                    }
                }
            }
            return(obj);
        }