/// <summary> /// 创建一个空 /// </summary> /// <returns></returns> public static DynamicObj NewObj(string Key, object Value) { DynamicObj obj = new DynamicObj(); obj.Set(Key, Value); return(obj); }
/// <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); }
/// <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); }
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); }
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); }
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); }