Dependendo da situação podemos ter a necessidade de trafegar ou armazenar dados compactados a fim de reduzir o tamanho de armazenamento ou a quantidade de dados trafegado. Com essa ideia, desenvolvi uma lib que utiliza a própria implementação da lib Jackson para transformar o JSON gerado por ela em um JSON compactado por GZIP, dessa forma, conseguimos reduzir muito seu tamanho, em testes, conseguimos transformar um JSON de 7KB em um de 1KB, uma redução bem significativa.
A compactação de Strings depende de diversos fatores e pode ter casos que não seja vantajoso realizá-la, por exemplo, um JSON relativamente pequeno, o resultado da compressão será maior, já que a lib desenvolvida devolve uma String de output e para isso acontecer há a necessidade de transformar para Base64, dessa forma, seu tamanho será maior. Por isso é importante avaliar onde é realmente necessário utiliza-lá, para que a solução não vire um problema ainda maior.
Lib Veja o README:
https://github.com/helpdeveloper/gzip-json-jackson
A lib é bem simples utiliza-lá, dado que você já tenha o Jackson configurado na aplicação, basta implementar em seu POJO a interface GzipSerializable
que automaticamente todo fluxo de conversão realizado pelo Jackson (seja manualmente com o ObjectMapper ou automaticamente pelo framework se desejar retornar em um endpoint) irá transformar seu POJO em um Json compactado em uma String no formato Base64. O fluxo para descompressão é o mesmo.