Самый дешевый способ рассчитать длину полезной нагрузки JSON, созданной ObjectMapper

В моем приложении я вычисляю длину полезной нагрузки (которая представляет собой 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;
    }
}
Парамон
Вопрос задан11 января 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.