private void ReadKeyValuePair(JsonStringReader keyReader, JsonReaderDirector director, JsonObject result) { JsonString key = (JsonString)keyReader.Read(); this._json.ReadWhitespace(); // Assure colon between key/value if (this._json.Read() != 58) { throw new JsonFormatException("Expected ':' after object key"); } result.Add(key.Value, director.ReadValue()); }
public override IJsonValue Read() { JsonReaderDirector director = new JsonReaderDirector(this._json); JsonArray result = new JsonArray(); States state = States.Start; while (state != States.End) { switch (state) { case States.Start: switch (this._json.Peek()) { case 91: this._json.Read(); state = States.ReadOpeningBracket; break; default: throw new JsonFormatException("Expected '[' to start an array"); } break; case States.ReadOpeningBracket: this._json.ReadWhitespace(); switch (this._json.Peek()) { case 93: this._json.Read(); state = States.End; break; default: result.Add(director.ReadValue()); state = States.ReadValue; break; } break; case States.ReadValue: switch (this._json.Peek()) { case 93: this._json.Read(); state = States.End; break; case 44: this._json.Read(); result.Add(director.ReadValue()); break; default: throw new JsonFormatException("Expected a ',' or ']' after value in array"); } break; case States.End: break; } } return(result); }