Browse Source

add feature #825

pull/829/head
saynaaskh 3 years ago
parent
commit
63b5c6d000
  1. 8
      json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java
  2. 21
      json-path/src/test/java/com/jayway/jsonpath/Issue_825.java

8
json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java

@ -29,8 +29,10 @@ import com.jayway.jsonpath.spi.cache.CacheProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import static com.jayway.jsonpath.JsonPath.compile;
import static com.jayway.jsonpath.internal.Utils.notEmpty;
@ -79,6 +81,9 @@ public class JsonContext implements DocumentContext {
@Override
public <T> T read(String path, Class<T> type, Predicate... filters) {
if (type == Stream.class) {
return (T) convert(read(path, filters), List.class, configuration).stream();
}
return convert(read(path, filters), type, configuration);
}
@ -90,6 +95,9 @@ public class JsonContext implements DocumentContext {
@Override
public <T> T read(JsonPath path, Class<T> type) {
if (type == Stream.class) {
return (T) convert(read(path), List.class, configuration).stream();
}
return convert(read(path), type, configuration);
}

21
json-path/src/test/java/com/jayway/jsonpath/Issue_825.java

@ -0,0 +1,21 @@
package com.jayway.jsonpath;
import org.junit.Test;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
public class Issue_825 extends BaseTest {
@Test
public void double_stream_test() {
Stream<Double> stream = JsonPath.parse(JSON_DOCUMENT).read("store.book[?(@.display-price <= $.max-price)].display-price", Stream.class);
assertThat(stream.collect(Collectors.toList())).containsAll(asList(8.95D, 8.99D));
}
@Test
public void string_stream_test() {
Stream<String> stream = JsonPath.parse(JSON_DOCUMENT).read("$.store.book.[*].title", Stream.class);
assertThat(stream.collect(Collectors.toList())).containsAll(asList("Sayings of the Century", "Sword of Honour", "Moby Dick", "The Lord of the Rings"));
}
}
Loading…
Cancel
Save