internal JsonArray ReadArray() { reader.Ensure(TokenKind.LeftBracket, "array"); var array = new XNodeArray(); reader.Next(); // Read the '[' (Array start) // Read the array's items while (reader.Current.Kind != TokenKind.RightBracket) { if (reader.Current.Kind == TokenKind.Comma) { reader.Next(); // Read the ',' (Seperator) } if (reader.Current.IsLiteral) { array.Add(ReadLiteral()); // Boolean, Date, Number, Null, String, Uri } else if (reader.Current.Kind == TokenKind.LeftBracket) { array.Add(ReadArray()); // Array } else if (reader.Current.Kind == TokenKind.LeftBrace) { array.Add(ReadObject()); // Object } else { throw new ParserException($"Expected comma, literal, or object. Was {reader.Current}."); } } reader.Next(); // Read the ']' (Array end) return(array); }