Skip to content

Commit 83a9c9a

Browse files
committed
Implement array range with object
1 parent c9e53ff commit 83a9c9a

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/main/java/dev/vepo/jsonata/functions/ArrayRangeJSONataFunction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ public record ArrayRangeJSONataFunction(int start, int end) implements JSONataFu
1010

1111
@Override
1212
public Data map(Data original, Data current) {
13-
if (!current.isArray()) {
13+
if (!current.isArray() && start == 0) {
1414
return current;
1515
}
16-
if (start < current.length()) {
16+
if (current.isArray() && start < current.length()) {
1717
return new GroupedData(range(start, min(end + 1, current.length())).mapToObj(current::at)
1818
.toList());
1919
} else {

src/test/java/dev/vepo/jsonata/JSONataTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ void arrayTest() {
7676
assertThat(jsonata("(Phone.number)[0]").evaluate(OBJECT).asText()).isEqualTo("0203 544 1234");
7777
assertThat(jsonata("Phone[[0..1]]").evaluate(OBJECT).multi().asText()).containsExactly("{\"type\":\"home\",\"number\":\"0203 544 1234\"}",
7878
"{\"type\":\"office\",\"number\":\"01962 001234\"}");
79+
assertThat(jsonata("Address[[0..3]]").evaluate(OBJECT).asText()).isEqualTo("{\"Street\":\"Hursley Park\",\"City\":\"Winchester\",\"Postcode\":\"SO21 2JN\"}");
80+
assertThat(jsonata("Address[[1..3]]").evaluate(OBJECT).isEmpty()).isTrue();
7981
}
8082
}
8183

0 commit comments

Comments
 (0)