/// <summary> /// Reads the next token ensuring that it matches the specified /// token. If not, an exception is thrown. /// </summary> public string ReadToken(JsonTokenClass token) { int depth = Depth; if (!token.IsTerminator) { MoveToContent(); } // // We allow an exception to the simple case of validating // the token and returning its value. If the reader is still at // the start (depth is zero) and we're being asked to check // for the null token or a scalar-type token then we allow that // to be appear within a one-length array. This is done because // valid JSON text must begin with an array or object. Our // JsonWriterBase automatically wraps a scalar value in an // array if not done explicitly. This exception here allow // that case to pass as being logically valid, as if the // token appeared entirely on its own between BOF and EOF. // string text; if (depth == 0 && TokenClass == JsonTokenClass.Array && (token.IsScalar || token == JsonTokenClass.Null)) { Read(/* array */); text = ReadToken(token); ReadToken(JsonTokenClass.EndArray); } else { if (TokenClass != token) { throw new JsonException(string.Format("Found {0} where {1} was expected.", TokenClass, token)); } text = Text; Read(); } return(text); }
private JsonToken(JsonTokenClass clazz, string text) { _class = clazz; _text = text; }
private JsonToken(JsonTokenClass clazz) : this(clazz, null) { }