diff --git a/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java b/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java index 0d7e177d09b..53792aaf4ab 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java @@ -81,13 +81,16 @@ public class JacksonJsonEncoder extends AbstractEncoder { return Flux.from(inputStream).map(value -> encodeValue(value, bufferFactory, elementType)); } + Mono startArray = Mono.just(bufferFactory.wrap(START_ARRAY_BUFFER)); + Mono endArray = Mono.just(bufferFactory.wrap(END_ARRAY_BUFFER)); + Flux array = Flux.from(inputStream) - .flatMap(value -> - Flux.just(encodeValue(value, bufferFactory, elementType), - bufferFactory.wrap(SEPARATOR_BUFFER))); + .flatMap(value -> { + DataBuffer arraySeparator = bufferFactory.wrap(SEPARATOR_BUFFER); + return Flux.just(encodeValue(value, bufferFactory, elementType), arraySeparator); + }); - return Flux.concat(Mono.just(bufferFactory.wrap(START_ARRAY_BUFFER)), array.skipLast(1), - Mono.just(bufferFactory.wrap(END_ARRAY_BUFFER))); + return Flux.concat(startArray, array.skipLast(1), endArray); } private DataBuffer encodeValue(Object value, DataBufferFactory bufferFactory, ResolvableType type) {