private object DeserializeInternal(int depth) { if (++depth > _depthLimit) { throw Error.DepthLimitExceeded(); } char?nextChar = _serializedValue.GetNextNonEmptyChar(); if (!nextChar.HasValue) { return(null); } JavaScriptTypeResolver resolver = _serializer.TypeResolver; _serializedValue.MovePrev(); if (IsNextElementDateTime()) { return(DeserializeStringIntoDateTime()); } if (IsNextElementObject(nextChar)) { IDictionary <string, object> dict = DeserializeDictionary(depth); if (dict.ContainsKey(JavaScriptSerializer.ServerTypeFieldName)) { return(ObjectConverter.ConvertObject(dict, (resolver == null) ? null : resolver.ResolveType( dict[JavaScriptSerializer.ServerTypeFieldName].ToString()), _serializer)); } return(dict); } if (IsNextElementArray(nextChar)) { return(DeserializeList(depth)); } if (IsNextElementString(nextChar)) { return(DeserializeString()); } return(DeserializePrimitiveObject()); }
private static bool TryConvertObjectToType(object obj, Type type, JavaScriptSerializer serializer, bool throwOnError, out object convertedObject) { if (obj == null) { if (type == typeof(char)) { convertedObject = '\0'; return(true); } else { if (IsNonNullableValueType(type)) { if (throwOnError) { throw Error.ArgumentNull("obj"); } else { convertedObject = null; return(false); } } convertedObject = null; return(true); } } if (obj.GetType() != type) { return(ObjectConverter.TryConvertObjectToTypeInternal(obj, type, serializer, throwOnError, out convertedObject)); } convertedObject = obj; return(true); }
public T ConvertToType <T>(object obj) { return((T)ObjectConverter.ConvertObject(obj, typeof(T), this)); }
public object ConvertToType(Type type, object obj) { return(ObjectConverter.ConvertObject(obj, type, this)); }