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(); } }
internal JsonTokenizer(SourceReader reader) { this.reader = reader; reader.Next(); // Start with the first char }