Browse Source

fix 620 (#693)

Co-authored-by: CindyChow123 <CindyChow123>
pull/732/head
Cincronic 3 years ago committed by GitHub
parent
commit
dc296b316a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java
  2. 69
      json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java

3
json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java

@ -333,7 +333,8 @@ public class PathCompiler {
// we've encountered a COMMA do the same // we've encountered a COMMA do the same
case CLOSE_PARENTHESIS: case CLOSE_PARENTHESIS:
groupParen--; groupParen--;
if (0 != groupParen) { //CS304 Issue link: https://github.com/json-path/JsonPath/issues/620
if (0 > groupParen ) {
parameter.append(c); parameter.append(c);
} }
case COMMA: case COMMA:

69
json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java

@ -1047,4 +1047,73 @@ public class IssuesTest extends BaseTest {
ctx.read(jsonPath); ctx.read(jsonPath);
} }
//CS304 (manually written) Issue link: https://github.com/json-path/JsonPath/issues/620
@Test
public void issue_620_1(){
String json = "{\n" +
" \"complexText\": {\n" +
" \"nestedFields\": [\n" +
" {\n" +
" \"index\": \"0\",\n" +
" \"name\": \"A\"\n" +
" },\n" +
" {\n" +
" \"index\": \"1\",\n" +
" \"name\": \"B\"\n" +
" },\n" +
" {\n" +
" \"index\": \"2\",\n" +
" \"name\": \"C\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";
String path1 = "$.concat($.complexText.nestedFields[?(@.index == '2')].name," +
"$.complexText.nestedFields[?(@.index == '1')].name," +
"$.complexText.nestedFields[?(@.index == '0')].name)";
String path2 = "$.concat($.complexText.nestedFields[2].name," +
"$.complexText.nestedFields[1].name," +
"$.complexText.nestedFields[0].name)";
assertThat((String)JsonPath.read(json,path1)).isEqualTo("CBA");
assertThat((String)JsonPath.read(json,path2)).isEqualTo("CBA");
}
//CS304 (manually written) Issue link: https://github.com/json-path/JsonPath/issues/620
@Test
public void issue_620_2(){
String json = "{\n" +
" \"complexText\": {\n" +
" \"nestedFields\": [\n" +
" {\n" +
" \"index\": \"0\",\n" +
" \"name\": \"A\"\n" +
" },\n" +
" {\n" +
" \"index\": \"1\",\n" +
" \"name\": \"B\"\n" +
" },\n" +
" {\n" +
" \"index\": \"2\",\n" +
" \"name\": \"C\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";
String path1 = "$.concat($.complexText.nestedFields[?(@.index == '2')].name," +
"$.complexText.nestedFields[?((@.index == '1')].name," +
"$.complexText.nestedFields[?(@.index == '0')].name)";
boolean thrown = false;
try {
Object result = (Object) JsonPath.read(json,path1);
} catch (Exception e) {
thrown = true;
}
assertTrue(thrown);
}
} }

Loading…
Cancel
Save