Я хочу сжать большой объект JSON в javascript и распаковать его в java. Какой алгоритм сжатия лучше всего это поддерживает?
Продолжая то же самое, я попытался использовать gzip, столкнувшись с проблемой при этом ..
" У меня есть javascript на стороне клиента и Java Jboss Resteasy на моей стороне сервера. Я попробовал вашПодход, который не работает. Я использовал библиотеку zlib в javascript для сжатия с помощью Gzip и использовал Content Encoding в качестве gzip, а также аннотацию Gzip на стороне сервера Jboss для его автоматической распаковки. Это не работало. Также я пытался использовать InputStreamReader для распаковки вJava, это выдает ошибку «Данные не в формате Gzip». Можете ли вы помочь мне здесь, если это возможно, вы можете вставить пример кода для того же"
Код в Javascript
zlib.gzip(JSON.stringify($scope.jsonCompressCheck),function(err, buffer) {
if (!err) {
console.log("USing gzip: ");
console.log("Byte Length: "+Buffer.byteLength(buffer));
console.log(sizeof(buffer));
$scope.compressed = buffer;
var buf2 = Buffer.from(JSON.stringify($scope.jsonCompressCheck));
$http.post(ATS_URL + ATS_INSTANCE + '/rest/private/decompress/' + clientName + '/gzipdecompress', ($scope.compressed), {
contentType: 'application/json',
contentEncoding: 'gzip'
}).success(function (data, status, headers) {
console.log("Output Response :- "+data+" Headers: "+headers+" status: "+status);
}).error(function (reason) {
console.log(" Error reason "+reason);
});
Java-код здесь: конечная точка Jboss RestEasy
@POST @NoCache
@ApiOperation(value = "Decompress Given Compressed Json object Using Gzip",
response = ElasticSearchResults.class, position = 0)
@Path("/{client}/gzipdecompress")
public String gzipJsonDecompress(
@ApiParam(value = "This required field should be the client name as defined in the datasources.", required = true)
@PathParam("client") String client,
@GZIP byte[] compressedObject) throws ATSException {
return decompressService.gzipJsonDecompress(client,compressedObject);
}
Код реализации
public String gzipJsonDecompress(String client,byte[] compressedObject)throws ATSException{
validateDomain(client);
try
{ InputStream inputStream = new
ByteArrayInputStream(compressedObject);
GZIPInputStream gzipInput = new GZIPInputStream(inputStream); //Not working here
....