import java.io.ByteArrayOutputStream
import java.nio.charset.StandardCharsets.UTF_8
import java.util.zip.GZIPInputStream
import java.util.zip.GZIPOutputStream

fun gzip(content: String): ByteArray {
    val bos = ByteArrayOutputStream()
    GZIPOutputStream(bos).bufferedWriter(UTF_8).use { it.write(content) }
    return bos.toByteArray()
}

fun ungzip(content: ByteArray): String =
    GZIPInputStream(content.inputStream()).bufferedReader(UTF_8).use { it.readText() }

fun main() {
    val content = """[{"date":"2020-11-11","id":"1b6d014b-9b75-4027-a3a0-2269b4ca580f","meals":[{"comment":"","estimatedTime":"09:30:00.000","id":"d1013851-1f9b-4f32-8319-467ef027cf48","index":0,"realTime":"09:30:00.000"},{"comment":"","estimatedTime":"12:30:00.000","id":"4ac8249f-ee12-4aca-88ce-5c29725f0670","index":1,"realTime":"12:30:00.000"},{"comment":"","estimatedTime":"15:30:00.000","id":"8a253b59-f7d2-425e-b6ce-fa4784cafacb","index":2,"realTime":"15:30:00.000"},{"comment":"","estimatedTime":"18:30:00.000","id":"896eec15-c27e-4610-bc01-86b0948c0701","index":3,"realTime":"18:30:00.000"},{"comment":"","estimatedTime":"21:30:00.000","id":"caa24475-76b1-4a5e-a141-3667aed9e799","index":4,"realTime":"21:30:00.000"},{"comment":"","estimatedTime":"00:30:00.000","id":"aac98f88-cf82-4817-a407-94d5d3f39151","index":5,"realTime":"00:30:00.000"}],"nextMealIndex":0},{"date":"2020-11-11","id":"144f1d8e-7782-4067-8d90-e8282eb0d8f5","meals":[{"comment":"","estimatedTime":"09:30:00.000","id":"39ab9f5c-deb4-4fac-9e34-f1d453ef7957","index":0,"realTime":"09:30:00.000"},{"comment":"","estimatedTime":"12:30:00.000","id":"4d3670b7-7dcc-47ba-829c-145b5fb09006","index":1,"realTime":"12:30:00.000"},{"comment":"","estimatedTime":"15:30:00.000","id":"da7e3b19-792f-4e2d-8694-ae914f08c5f5","index":2,"realTime":"15:30:00.000"},{"comment":"","estimatedTime":"18:30:00.000","id":"c56ae287-6c4f-4cb6-a3b8-91f2116fe368","index":3,"realTime":"18:30:00.000"},{"comment":"","estimatedTime":"21:30:00.000","id":"e5ef17ed-bfed-429c-927a-56936425ac76","index":4,"realTime":"21:30:00.000"}],"nextMealIndex":0}]"""

    println("size of original: ${content.length}")
    val zipped = gzip(content)
    println("size zipped: ${zipped.size}")
    val unzipped = ungzip(zipped)
    println("size unzipped: ${unzipped.length}")
    assert(unzipped == content)
}

Изменить пасту