diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java index 4d003dc7..f83e953a 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java @@ -576,6 +576,10 @@ public class PathCompiler { break; } else if (c == potentialStringDelimiter) { if (inProperty && !inEscape) { + char nextSignificantChar = path.nextSignificantChar(readPosition); + if (nextSignificantChar != CLOSE_SQUARE_BRACKET && nextSignificantChar != COMMA) { + fail("Property must be separated by comma or Property must be terminated close square bracket at index "+readPosition); + } endPosition = readPosition; String prop = path.subSequence(startPosition, endPosition).toString(); properties.add(Utils.unescape(prop)); diff --git a/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java b/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java index 60a5ba83..699ba631 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java @@ -266,4 +266,9 @@ public class PathCompilerTest { public void accept_only_a_single_comma_between_indexes() { compile("$['1', ,'3']"); } + + @Test(expected = InvalidPathException.class) + public void property_must_be_separated_by_commas() { + compile("$['aaa'}'bbb']"); + } }