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 e4fcd311..0795ffc0 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 @@ -29,6 +29,7 @@ public class PathCompiler { private static final char SPLIT = ':'; private static final char MINUS = '-'; private static final char TICK = '\''; + private static final char DOUBLE_QUOTE = '"'; private final LinkedList filterStack; private final CharacterIndex path; @@ -345,9 +346,13 @@ public class PathCompiler { // ['foo'] // private boolean readBracketPropertyToken(PathTokenAppender appender) { - if (!path.currentCharIs(OPEN_SQUARE_BRACKET) || !path.nextSignificantCharIs(TICK)) { + if (!path.currentCharIs(OPEN_SQUARE_BRACKET)) { return false; } + char potentialStringDelimiter = path.nextSignificantChar(); + if (potentialStringDelimiter != TICK && potentialStringDelimiter != DOUBLE_QUOTE) { + return false; + } List properties = new ArrayList(); @@ -361,7 +366,7 @@ public class PathCompiler { if (c == CLOSE_SQUARE_BRACKET && !inProperty) { break; - } else if (c == TICK) { + } else if (c == potentialStringDelimiter) { if (inProperty) { endPosition = readPosition; properties.add(path.subSequence(startPosition, endPosition).toString()); 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 2c232cca..a0d477fe 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java @@ -59,6 +59,7 @@ public class PathCompilerTest { assertThat(compile("$['1prop']").toString()).isEqualTo("$['1prop']"); assertThat(compile("$['@prop']").toString()).isEqualTo("$['@prop']"); assertThat(compile("$[ '@prop' ]").toString()).isEqualTo("$['@prop']"); + assertThat(compile("$[\"prop\"]").toString()).isEqualTo("$['prop']"); } @Test