diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java index dd1ce11ee7..21c55e4fc7 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java @@ -198,6 +198,7 @@ public abstract class AbstractJackson2Encoder extends Jackson2CodecSupport imple bufferFactory.join(Arrays.asList(bufferFactory.wrap(prefix), dataBuffer)) : dataBuffer); }) + .switchIfEmpty(Mono.fromCallable(() -> bufferFactory.wrap(helper.getPrefix()))) .concatWith(Mono.fromCallable(() -> bufferFactory.wrap(helper.getSuffix()))); } diff --git a/spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonEncoderTests.java b/spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonEncoderTests.java index 786be58952..dbdca0ea99 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonEncoderTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonEncoderTests.java @@ -144,6 +144,14 @@ public class Jackson2JsonEncoderTests extends AbstractEncoderTests step + .consumeNextWith(expectString("[")) + .consumeNextWith(expectString("]")) + .verifyComplete()); + } + @Test // gh-29038 void encodeNonStreamWithErrorAsFirstSignal() { String message = "I'm a teapot";