Ejemplo n.º 1
0
            bool ParseObjectArray(IRTSList array, Type type)
            {
                switch (NextToken)
                {
                case TOKEN.CURLY_OPEN:
                    json.Read();
                    while (true)
                    {
                        switch (NextToken)
                        {
                        case TOKEN.NONE:
                            return(false);

                        case TOKEN.COMMA:
                            continue;

                        case TOKEN.CURLY_CLOSE:
                            return(true);
                        }
                        string name = ParseString(type_string);
                        if (name == null)
                        {
                            return(false);
                        }
                        if (NextToken != TOKEN.COLON)
                        {
                            return(false);
                        }
                        json.Read();
                        object value = ParseNext(type);
                        if (!double.IsNaN(RTSListUtil.FromKey(name)))
                        {
                            double p = double.Parse(name.Substring(1, name.Length - 1));
                            if (array != null)
                            {
                                array.RawAdd(p, value);
                            }
                        }
                        else
                        {
                            if (array != null)
                            {
                                array.Add(value);
                            }
                        }
                    }

                case TOKEN.SQUARED_OPEN:
                    json.Read();
                    while (true)
                    {
                        switch (NextToken)
                        {
                        case TOKEN.NONE:
                            return(false);

                        case TOKEN.COMMA:
                            continue;

                        case TOKEN.SQUARED_CLOSE:
                            return(true);

                        default:
                            object value = ParseNext(type);
                            if (array != null)
                            {
                                array.Add(value);
                            }
                            break;
                        }
                    }
                }
                return(false);
            }