From 2572cbab027abf766d183d7abc58b0d92ea88487 Mon Sep 17 00:00:00 2001 From: kysnm Date: Wed, 21 Sep 2016 02:20:27 +0900 Subject: [PATCH 1/2] Property must be separated by commas --- .../java/com/jayway/jsonpath/internal/path/PathCompiler.java | 3 +++ .../src/test/java/com/jayway/jsonpath/PathCompilerTest.java | 5 +++++ 2 files changed, 8 insertions(+) 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..b1e142c0 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,9 @@ public class PathCompiler { break; } else if (c == potentialStringDelimiter) { if (inProperty && !inEscape) { + if (!path.nextSignificantCharIs(readPosition, COMMA) && !path.nextSignificantCharIs(readPosition, CLOSE_SQUARE_BRACKET)) { + 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']"); + } } From 0ea1cb59adc1e9d15ff7ff918f54c94ead3c86e0 Mon Sep 17 00:00:00 2001 From: kysnm Date: Wed, 21 Sep 2016 13:20:23 +0900 Subject: [PATCH 2/2] The conditions the same as the other --- .../java/com/jayway/jsonpath/internal/path/PathCompiler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 b1e142c0..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,7 +576,8 @@ public class PathCompiler { break; } else if (c == potentialStringDelimiter) { if (inProperty && !inEscape) { - if (!path.nextSignificantCharIs(readPosition, COMMA) && !path.nextSignificantCharIs(readPosition, CLOSE_SQUARE_BRACKET)) { + 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;