private static object Deserialize(JavaScriptSerializer serializer,
                                          string input, Type type, int depthLimit)
        {
            Precondition.Require(input, () => Error.ArgumentNull("input"));
            if (input.Length > serializer.MaxJsonLength)
            {
                throw Error.MaximumJsonStringLengthExceeded();
            }

            return(ObjectConverter.ConvertObject(
                       JavaScriptObjectDeserializer.BasicDeserialize(input, depthLimit, serializer),
                       type, serializer));
        }
예제 #2
0
        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());
        }
 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));
 }