예제 #1
0
        internal JsonToken ReadNext()
        {
            reader.SkipWhitespace();

            if (reader.IsEof)
            {
                return(JsonToken.Eof);
            }

            switch (reader.Current)
            {
            case '"': return(ReadQuotedString());

            // Symbols
            case '[': reader.Next(); return(JsonToken.BracketOpen);       // Array start

            case ']': reader.Next(); return(JsonToken.BracketClose);      // Array end

            case ',': reader.Next(); return(JsonToken.Comma);             // Value seperator

            case ':': reader.Next(); return(JsonToken.Colon);             // Field value indicator

            case '{': reader.Next(); return(JsonToken.BraceOpen);         // Object start

            case '}': reader.Next(); return(JsonToken.BraceClose);        // Object end

            case '\0': reader.Next(); return(JsonToken.Terminator);       // Stream terminiator

            default: return(ReadLiteral());
            }
        }
예제 #2
0
        internal JsonTokenizer(SourceReader reader)
        {
            this.reader = reader;

            reader.Next(); // Start with the first char
        }