Если кому интересно, придумал такой костыль:
Flux<String> items = ... здесь исходный Flux ... ;
Flux<Integer> numbers = Flux.generate(
() -> 0,
(state, sink) -> {
sink.next(state);
return state + 1;
}
);
items.zipWith(numbers, (i,n) -> n + i)
.map(item-> item.replace("0{", "{").replaceFirst("^[0-9]+", ", "))
.startWith("[")
.concatWithValues("]")
.subscribe(System.out::println);
Т.е. мы сначала к каждой строке пририсовываем последовательный номер. Потом первый номер (0) просто затираем, а остальные меняем на запятую. Ну и потом оборачиваем всё квадратными скобками.
Не знаю насколько это хорошо, но работает :)