diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java index 34cf1402..150c27c8 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java @@ -82,7 +82,8 @@ public abstract class PathToken { PathRef pathRef = ctx.forUpdate() ? PathRef.create(model, property) : PathRef.NO_OP; if (isLeaf()) { String idx = "[" + String.valueOf(upstreamArrayIndex) + "]"; - if(idx.equals("[-1]") || ctx.getRoot().getTail().prev().getPathFragment().equals(idx)){ + if(idx.equals("[-1]") || ctx.getRoot().getTail().prev().getPathFragment().equals(idx) || + ctx.getRoot().getTail().prev().getPathFragment().equals("[*]")){ ctx.addResult(evalPath, pathRef, propertyVal); } } diff --git a/json-path/src/test/java/com/jayway/jsonpath/Issue_857.java b/json-path/src/test/java/com/jayway/jsonpath/Issue_857.java new file mode 100644 index 00000000..6b4ddab9 --- /dev/null +++ b/json-path/src/test/java/com/jayway/jsonpath/Issue_857.java @@ -0,0 +1,28 @@ +package com.jayway.jsonpath; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author skwqyg + * @Created on 2022 09 2022/9/10 16:36 + */ +public class Issue_857 extends BaseTest{ + + @Test + public void test(){ + Collection values = JsonPath.parse("[{\"key\":\"first value\"},{\"key\":\"second value\"}]") + .read("$..[*].key", java.util.Collection.class); + Assert.assertEquals(2,values.size()); + Set expect = new HashSet<>(); + expect.add("first value"); + expect.add("second value"); + Assert.assertTrue(expect.containsAll(values)); + System.out.println(values); + } + +}