internal BsonValue ReadValue(JsonToken token) { switch (token.TokenType) { case JsonTokenType.String: return token.Token; case JsonTokenType.BeginDoc: return this.ReadObject(); case JsonTokenType.BeginArray: return this.ReadArray(); case JsonTokenType.Number: return token.Token.Contains(".") ? new BsonValue(Convert.ToDouble(token.Token, CultureInfo.InvariantCulture.NumberFormat)) : new BsonValue(Convert.ToInt32(token.Token)); case JsonTokenType.Word: switch (token.Token) { case "null": return BsonValue.Null; case "true": return true; case "false": return false; default: throw LiteException.UnexpectedToken(token.Token); } } throw LiteException.UnexpectedToken(token.Token); }
/// <summary> /// Read next json token /// </summary> public JsonToken ReadToken() { this.EatWhitespace(); if (this.EOF) { return new JsonToken { TokenType = JsonTokenType.EOF }; } JsonToken token = null; switch (_current) { case '[': token = new JsonToken { TokenType = JsonTokenType.BeginArray, Token = "[" }; this.Read(); break; case ']': token = new JsonToken { TokenType = JsonTokenType.EndArray, Token = "]" }; this.Read(); break; case '{': token = new JsonToken { TokenType = JsonTokenType.BeginDoc, Token = "{" }; this.Read(); break; case '}': token = new JsonToken { TokenType = JsonTokenType.EndDoc, Token = "}" }; this.Read(); break; case ':': token = new JsonToken { TokenType = JsonTokenType.Colon, Token = ":" }; this.Read(); break; case ',': token = new JsonToken { TokenType = JsonTokenType.Comma, Token = "," }; this.Read(); break; case '\"': token = new JsonToken { TokenType = JsonTokenType.String, Token = this.ReadString() }; break; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': token = new JsonToken { TokenType = JsonTokenType.Number, Token = this.ReadNumber() }; break; default: token = new JsonToken { TokenType = JsonTokenType.Word, Token = this.ReadWord() }; break; } return token; }
/// <summary> /// Read next json token /// </summary> public JsonToken ReadToken() { EatWhitespace(); if (EOF) { return(new JsonToken { TokenType = JsonTokenType.EOF }); } JsonToken token = null; switch (_current) { case '[': token = new JsonToken { TokenType = JsonTokenType.BeginArray, Token = "[" }; Read(); break; case ']': token = new JsonToken { TokenType = JsonTokenType.EndArray, Token = "]" }; Read(); break; case '{': token = new JsonToken { TokenType = JsonTokenType.BeginDoc, Token = "{" }; Read(); break; case '}': token = new JsonToken { TokenType = JsonTokenType.EndDoc, Token = "}" }; Read(); break; case ':': token = new JsonToken { TokenType = JsonTokenType.Colon, Token = ":" }; Read(); break; case ',': token = new JsonToken { TokenType = JsonTokenType.Comma, Token = "," }; Read(); break; case '\"': token = new JsonToken { TokenType = JsonTokenType.String, Token = ReadString() }; break; case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': token = new JsonToken { TokenType = JsonTokenType.Number, Token = ReadNumber() }; break; default: token = new JsonToken { TokenType = JsonTokenType.Word, Token = ReadWord() }; break; } return(token); }