Refine `JsonWriter` for structured logging
Add `formatToBytes()` method for use with structured logging. See gh-41491
This commit is contained in:
parent
700c1e8f82
commit
50dbaec2d0
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.boot.json;
|
package org.springframework.boot.json;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
|
@ -187,6 +188,29 @@ public interface JsonWriter<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the JSON to a UTF-8 encoded byte array.
|
||||||
|
* @return the JSON bytes
|
||||||
|
*/
|
||||||
|
default byte[] toByteArray() {
|
||||||
|
return toByteArray(StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the JSON to a byte array.
|
||||||
|
* @param charset the charset
|
||||||
|
* @return the JSON bytes
|
||||||
|
*/
|
||||||
|
default byte[] toByteArray(Charset charset) {
|
||||||
|
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
||||||
|
toWriter(new OutputStreamWriter(out, charset));
|
||||||
|
return out.toByteArray();
|
||||||
|
}
|
||||||
|
catch (IOException ex) {
|
||||||
|
throw new UncheckedIOException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write the JSON to the provided {@link WritableResource} using
|
* Write the JSON to the provided {@link WritableResource} using
|
||||||
* {@link StandardCharsets#UTF_8 UTF8} encoding.
|
* {@link StandardCharsets#UTF_8 UTF8} encoding.
|
||||||
|
|
|
@ -480,6 +480,12 @@ public class JsonWriterTests {
|
||||||
.withMessage("bad");
|
.withMessage("bad");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void toByteArrayReturnsByteArray() {
|
||||||
|
WritableJson writable = (out) -> out.append("{}");
|
||||||
|
assertThat(writable.toByteArray()).isEqualTo("{}".getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void toResourceWritesJson() throws Exception {
|
void toResourceWritesJson() throws Exception {
|
||||||
File file = new File(JsonWriterTests.this.temp, "out.json");
|
File file = new File(JsonWriterTests.this.temp, "out.json");
|
||||||
|
|
Loading…
Reference in New Issue