В моем приложении я вычисляю длину полезной нагрузки (которая представляет собой JSON, созданный ObjectMapper
) перед ее дальнейшей передачей.
Для этого я использую пользовательский OutputStream
:
Это работает отлично, однако требует некоторого дополнительного времени и памяти для десериализации (метод write(byte[] b, int off, int len)
получает byte[]
длиной 8192).
Интересно, есть ли альтернативный и более быстрый способ реализовать это?
@Autowired
ObjectMapper objectMapper;
private int calculateContentLength(MyPayload payload) throws IOException {
var countingOutputStream = new CountingOutputStream();
objectMapper.writeValue(countingOutputStream, accounts);
return countingOutputStream.count;
}
private static class CountingOutputStream extends OutputStream {
private int count;
@Override
public void write(int b) {
count++;
}
@Override
public void write(byte[] b) {
count += b.length;
}
@Override
public void write(byte[] b, int off, int len) {
count += b.length;
}
}
Жанна
Вопрос задан21 августа 2024 г.