Ejemplo n.º 1
0
        private static IJsonValue ParseValue(this IJsonReader reader)
        {
            reader.Read();

            if (reader.CurrentToken == Json.Token.String)
            {
                return(new JsonString((string)reader.CurrentValue));
            }
            else if (reader.CurrentToken == Json.Token.Integer)
            {
                return(new JsonFloat((int)reader.CurrentValue));
            }
            else if (reader.CurrentToken == Json.Token.Float)
            {
                return(new JsonFloat((float)reader.CurrentValue));
            }
            else if (reader.CurrentToken == Json.Token.Boolean)
            {
                return(new JsonBool((bool)reader.CurrentValue));
            }
            else if (reader.CurrentToken == Json.Token.ArrayStart)
            {
                var array = new JsonArray();
                while (reader.CurrentToken != Json.Token.EndOfFile)
                {
                    var value = reader.ParseValue();
                    if (reader.CurrentToken == Json.Token.ArrayEnd)
                    {
                        break;
                    }
                    array.Add(value);
                }
                return(array);
            }
            else if (reader.CurrentToken == Json.Token.ObjectStart)
            {
                return(reader.ParseObject());
            }

            return(null);
        }