private object DeserializePrimitiveObject()
        {
            string input = DeserializePrimitiveToken();

            if (input.Equals("null"))
            {
                return(null);
            }

            if (input.Equals(Globals.True))
            {
                return(true);
            }

            if (input.Equals(Globals.False))
            {
                return(false);
            }

            if (input.Equals(JsonGlobals.PositiveInf))
            {
                return(float.PositiveInfinity);
            }
            if (input.Equals(JsonGlobals.NegativeInf))
            {
                return(float.NegativeInfinity);
            }

            bool hasDecimalPoint = input.IndexOfAny(JsonGlobals.FloatingPointCharacters) >= 0;

            if (!hasDecimalPoint)
            {
                int parseInt;
                if (Int32.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out parseInt))
                {
                    return(parseInt);
                }
                long parseLong;
                if (Int64.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out parseLong))
                {
                    return(parseLong);
                }

                if (_isDataContract)
                {
                    return(JavaScriptObjectDeserializer.ParseJsonNumberAsDoubleOrDecimal(input));
                }
            }
            //Ensure that the number is a valid JSON number.
            object ret = JavaScriptObjectDeserializer.ParseJsonNumberAsDoubleOrDecimal(input);

            if (ret.GetType() == Globals.TypeOfString)
            {
                throw new SerializationException(SR.Format(SR.ObjectDeserializer_IllegalPrimitive, input));
            }


            // return floating point number as string in DataContract case.
            return(_isDataContract ? input : ret);
        }
        private object TryParseJsonNumber(object value)
        {
            string input = value as string;

            if (input != null && input.IndexOfAny(JsonGlobals.FloatingPointCharacters) >= 0)
            {
                return(JavaScriptObjectDeserializer.ParseJsonNumberAsDoubleOrDecimal(input));
            }
            return(value);
        }