.NET Framework has a built-in support that would allow to do this.
Basically, you will have to take you string and convert it to a byte array. Then you will have to deflate (zip) your byte array and convert it to a base64 string.
Public Function ZipString(stringToZip As String) As String
Dim returnValue As String = ""
Using output As New MemoryStream()
Using gzip As New DeflateStream(output, CompressionMode.Compress)
Using writer As New StreamWriter(gzip, Encoding.[Default])
writer.Write(stringToZip)
End Using
End Using
returnValue = Convert.ToBase64String(output.ToArray())
End Using
Return returnValue
End Function
To get your original string, you do the opposite:
Public Function UnZipString(stringToUnZip As String) As String
Dim returnValue As String = ""
Using inputStream As New MemoryStream(Convert.FromBase64String(stringToUnZip))
Using gzip As New DeflateStream(inputStream, CompressionMode.Decompress)
Using reader As New StreamReader(gzip, System.Text.Encoding.UTF8)
returnValue = reader.ReadToEnd()
End Using
End Using
End Using
Return returnValue
End Function
You will then be able to store the JSON as a zipped string and unzip it when you'll need it.