MongoDB.Bson.IO.JsonScanner.GetNextToken C# (CSharp) Метод

GetNextToken() публичный статический Метод

Gets the next JsonToken from a JsonBuffer.
public static GetNextToken ( JsonBuffer buffer ) : JsonToken
buffer JsonBuffer The buffer.
Результат JsonToken
        public static JsonToken GetNextToken(JsonBuffer buffer)
        {
            // skip leading whitespace
            var c = buffer.Read();
            while (c != -1 && char.IsWhiteSpace((char)c))
            {
                c = buffer.Read();
            }
            if (c == -1)
            {
                return new JsonToken(JsonTokenType.EndOfFile, "<eof>");
            }

            // leading character determines token type
            switch (c)
            {
                case '{': return new JsonToken(JsonTokenType.BeginObject, "{");
                case '}': return new JsonToken(JsonTokenType.EndObject, "}");
                case '[': return new JsonToken(JsonTokenType.BeginArray, "[");
                case ']': return new JsonToken(JsonTokenType.EndArray, "]");
                case '(': return new JsonToken(JsonTokenType.LeftParen, "(");
                case ')': return new JsonToken(JsonTokenType.RightParen, ")");
                case ':': return new JsonToken(JsonTokenType.Colon, ":");
                case ',': return new JsonToken(JsonTokenType.Comma, ",");
                case '\'':
                case '"':
                    return GetStringToken(buffer, (char)c);
                case '/': return GetRegularExpressionToken(buffer);
                default:
                    if (c == '-' || char.IsDigit((char)c))
                    {
                        return GetNumberToken(buffer, c);
                    }
                    else if (c == '$' || c == '_' || char.IsLetter((char)c))
                    {
                        return GetUnquotedStringToken(buffer);
                    }
                    else
                    {
                        buffer.UnRead(c);
                        throw new Exception(FormatMessage("Invalid JSON input", buffer, buffer.Position));
                    }
            }
        }

Usage Example

Пример #1
0
 private JsonToken PopToken()
 {
     if (pushedToken != null)
     {
         var token = pushedToken;
         pushedToken = null;
         return(token);
     }
     else
     {
         return(JsonScanner.GetNextToken(buffer));
     }
 }