diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java index cfefe35e6cb..31ff618ed00 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/JsonValueWriter.java @@ -267,7 +267,6 @@ class JsonValueWriter { switch (ch) { case '"' -> this.out.append("\\\""); case '\\' -> this.out.append("\\\\"); - case '/' -> this.out.append("\\/"); case '\b' -> this.out.append("\\b"); case '\f' -> this.out.append("\\f"); case '\n' -> this.out.append("\\n"); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java index 9986adc8def..38b03d0bc7c 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java @@ -16,7 +16,6 @@ package org.springframework.boot.json; -import java.io.File; import java.nio.file.Path; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -27,6 +26,9 @@ import java.util.NoSuchElementException; import java.util.function.Consumer; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.EnabledOnOs; +import org.junit.jupiter.api.condition.OS; import org.springframework.boot.json.JsonValueWriter.Series; @@ -168,7 +170,6 @@ class JsonValueWriterTests { void writeWhenStringRequiringEscape() { assertThat(write("\"")).isEqualTo(quoted("\\\"")); assertThat(write("\\")).isEqualTo(quoted("\\\\")); - assertThat(write("/")).isEqualTo(quoted("\\/")); assertThat(write("\b")).isEqualTo(quoted("\\b")); assertThat(write("\f")).isEqualTo(quoted("\\f")); assertThat(write("\n")).isEqualTo(quoted("\\n")); @@ -177,6 +178,11 @@ class JsonValueWriterTests { assertThat(write("\u0000\u001F")).isEqualTo(quoted("\\u0000\\u001F")); } + @Test + void shouldNotEscapeForwardSlash() { + assertThat(write("/")).isEqualTo(quoted("/")); + } + @Test void writeObject() { Map map = Map.of("a", "A"); @@ -249,9 +255,15 @@ class JsonValueWriterTests { } @Test // gh-44502 + @EnabledOnOs(OS.WINDOWS) + void writeJavaNioPathShouldBeSerializedAsStringOnWindows() { + assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("a/b/c")))).isEqualTo(quoted("a\\\\b\\\\c")); + } + + @Test // gh-44502 + @DisabledOnOs(OS.WINDOWS) void writeJavaNioPathShouldBeSerializedAsString() { - assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("a/b/c")))) - .isEqualTo(quoted("a\\%1$sb\\%1$sc".formatted(File.separator))); + assertThat(doWrite((valueWriter) -> valueWriter.write(Path.of("a/b/c")))).isEqualTo(quoted("a/b/c")); } @Test